2014-06-06 6 views
1

Nokogiri을 사용하여 자동 생성 사이트에 올바른 정보와 하위 사이트가 있는지 확인합니다. 그것은 효과가 있지만 테스트 할 필요가 있습니다. 그렇게 할 좋은 방법이 확실하지 않습니다. 나의 현재 접근법은 내가 아는 온라인 사이트를 특정 정보를 가지고 찾아내는 것이다.웹 스크래핑 응용 프로그램을 테스트하는 방법은 무엇입니까?

예를 들어, 사이트의 테이블에있는 행 수를 시각적으로 확인한 다음 해당 테이블을 검사하는 함수가 해당 개수의 행을 반환하는지 테스트합니다. URL과 번호는 모두 하드 코드되어 있습니다. 사이트는 아마도 변경되지 않을 것이지만 불가능하지는 않습니다.이 경우 테스트가 명백히 실패합니다.

더 좋은 방법이 있습니까?

그냥 HTML 페이지를 작성하고 Nokigiri 기반 객체로를 열고

# fixture.html 
# ... truncated 
<table> 
    <tr></td>One Row</td></tr> 
</table> 

class TableScraper 
    attr_accessor :document, parser 
    def initialize(document, parser) 
    @document = document 
    @parser = parser 
    end 
    def rows_in_table 
    # your code here 
    end 
end 

describe TableScraper do 
    let(:file) { File.open("/path/to/fixture.html") } 
    subject { described_class.new(file, Nokogiri::HTML) } 
    it { expect { subject.rows_in_table }.to eq 1 } 
end 

은 분명히이 간단한 예제가 아닌 실제 코드이지만,이 내가 그것을 접근 얼마나 당신의 가정을 확인하지 왜

+0

정확성을 검사하는 더 좋은 도구는 [기계화] (https://github.com/sparklemotion/mechanize)입니다. 그것은 Nokogiri를 기반으로하지만, 페이지의 요소에 대해 알려주는 사전 작성된 메소드가 많이 있습니다. –

답변

1

.

+0

감사합니다. 나는 많은 테스트 사이트를 만들 필요가 없다고 생각한다. –

+0

[VCR] (https://github.com/vcr/vcr)과 같은 도구를 사용하여 테스트 픽스처의 생성을 자동화 할 수 있습니다. 약간의 설정이 필요하지만, 플러스 사이드에서는 잠시 후 조명기를 삭제하고 코드가 여전히 작동하는지 여부를 확인할 수 있습니다. – DMKE

관련 문제