스크레이핑은 웹페이지에서 데이터를 추출하는 과정을 말합니다. Python에서 requests-html 라이브러리는 웹페이지 스크레이핑에 유용한 기능을 제공합니다.
이런 스크레이핑 로직을 개발할 때, 유닛 테스트는 매우 중요한 역할을 합니다. 유닛 테스트를 통해 로직을 견고하게 만들고 버그를 방지할 수 있습니다.
이번 블로그 포스트에서는 requests-html 스크레이핑 로직의 유닛 테스트를 어떻게 작성하는지 알아보겠습니다.
유닛 테스트란?
유닛 테스트는 프로그램의 작은 부분인 유닛들을 테스트하는 과정입니다. 각 유닛은 독립적으로 작동하며, 특정 기능을 수행합니다. 이 테스트는 프로그램이 제대로 작동하는지 확인하고, 예상치 못한 오류나 버그를 찾을 수 있습니다.
requests-html 스크레이핑 로직의 유닛 테스트 작성하기
-
테스트 환경 설정
첫 번째 단계는 테스트 환경을 설정하는 것입니다. requests-html 라이브러리를 설치하고, 필요한 의존성 패키지를 임포트해야 합니다. 다음과 같은 명령어로 requests-html을 설치할 수 있습니다:
pip install requests-html
그리고 다음처럼 필요한 패키지를 임포트합니다:
from requests_html import HTMLSession import pytest
-
스크레이핑 로직 작성
두 번째 단계는 스크레이핑할 웹페이지에서 데이터를 추출하는 로직을 작성하는 것입니다. requests-html을 사용하여 웹페이지에 접속하고, 필요한 정보를 가져오는 코드를 작성합니다.
def get_title(url): session = HTMLSession() response = session.get(url) title = response.html.find('h1')[0].text return title
-
유닛 테스트 작성
이제 작성한 스크레이핑 로직에 대한 유닛 테스트를 작성해보겠습니다. pytest 라이브러리를 사용하여 간단한 테스트를 작성할 수 있습니다.
def test_get_title(): url = 'https://www.example.com' title = get_title(url) assert title == 'Example Domain'
이 예제에서는 ‘https://www.example.com’ 웹페이지의 제목이 ‘Example Domain’인지 확인하는 테스트를 작성했습니다. assert 문을 사용하여 실제 제목과 예상한 제목을 비교합니다.
-
테스트 실행
테스트를 실행하려면 pytest 명령어를 사용합니다. 이제 터미널에서 다음과 같이 입력하여 테스트를 실행해보세요:
pytest
결과는 성공 또는 실패로 나타날 것입니다. 테스트가 실패하면 로직에 오류가 있는 것이므로, 이를 수정하여 다시 테스트해야 합니다.
마무리
requests-html 라이브러리를 사용한 스크레이핑 로직의 유닛 테스트를 작성하는 방법을 알아보았습니다. 유닛 테스트를 통해 스크레이핑 로직을 확실히 검증하고, 버그를 최소화할 수 있습니다. 이를 통해 안정적이고 신뢰할 수 있는 스크레이핑 로직을 개발할 수 있습니다.