2017-11-03 4 views
-1

나는 파이썬으로 웹 스크래퍼를 만들고있다. 지금까지 나는 실제 웹 사이트로 테스트 해왔다. pytest를 통해 이상적으로 실행되는 적절한 테스트 슈트를 갖고 싶다. 어떤 아이디어/예제 그것을 어떻게?파이썬 : 웹 스크레이퍼의 기능 테스트

테스트가 몇 페이지 (아마도 별도의 프로세스로)를 제공하는 미니 http 서버를 돌릴 것이라고 생각합니다. API 함수 중 하나를 호출하여 스크래퍼를 실행하고 결과를 확인한 다음 서버를 종료합니다. 그것을 달성하는 가장 쉬운 방법은 무엇입니까?

EDIT : 누군가를 위해 유용 할 경우를 대비하여 여기에 설명 된 구체적인 해결책을 설명 할 것입니다. (논의를 시도하거나 세부 사항을 묻지 않고 너무 광범위하게 질문을 닫은 중재자는 분명 관심이 없습니다.) .

내 (파이썬 3) 코드에서 나는 처음에 urllib.request을 사용했습니다. 인터넷에서 검색을하다가 우수 httmock을 찾은 후에 해당 라이브러리가 requests이라고 생각하면 urllib.request과 작동하지 않습니다. 그래서 requests을 사용하기 위해 코드를 수정 한 다음 행복하게 httmock을 테스트에 사용할 수있었습니다. requestshttmock은 절대적으로 뛰어나며 적극 추천합니다.

+0

누군가가 "너무 광범위하게"질문을 닫도록 투표했습니다. 왜 그것이 너무 광범위하며 충분히 구체적으로 재 설명 할 수 있습니까? – piokuc

답변

1

활성 서버, 특히 각 테스트 후에 시작하고 파괴하려는 테스트에 대해 대부분의 테스트를 실행하지 않으려합니다. 그러면 테스트 스위트가 상당히 느려지고 실행중인 테스트가 더 고통 스러울 수 있습니다. 스크래퍼의 복잡성에 따라 스크래핑 논리의 정확성을 보장하는 테스트 슈트가 상당히 증가 할 수 있습니다.

대신 신속하게로드 할 수있는 정적 콘텐츠 (예 : 디스크에 캐시 된 웹 페이지)에 대해 스크레이퍼의 핵심 기능을 실행하십시오. 테스트 extractImageLinksFromPage(page) 페이지 콘텐츠를 공급하는 서버가 필요하지 않습니다, 당신은 단지 file.load(pageContent) 수 있습니다.

실행중인 서버에 대한 HTTP 요청 기능 만 테스트하십시오.

(사용자가 스크레이퍼와 상호 작용하는 방식을 시뮬레이트하는) 몇 가지 엔드 투 엔드 테스트를 원할 경우 서버를 사용할 수도 있습니다.

콘텐츠를 제공하고 실행하는 서버를 얻는 방법에는 여러 가지가 있습니다. 내가 생각하는 가장 빠른 것은 을 사용하는 사람이어야합니다. 따라서 node RESTful API에 대해 google을 사용하십시오. 파이썬 세계에 머 무르려면 flask을 찾아보십시오. 유스 케이스를위한 상용구가 아닙니다.