def test_field_xpath_extract_result_not_list(element0, build_first): field = Field(XPathExtractor("normalize-space(//div[@class='title'])")) assert not field.built assert not field.extractor.built if build_first: field.build() assert field.built assert field.extractor.built assert field.extract(element0) == "Title 1" assert field.built assert field.extractor.built
def test_field_extract(element0, Extractor, expr, expect, build_first): field = Field(Extractor(expr)) assert not field.built assert not field.extractor.built if build_first: field.build() assert field.built assert field.extractor.built assert expect == field.extract(element0) assert field.built assert field.extractor.built
def test_field_extract_with_is_many(element0, Extractor, expr, expect, build_first): field = Field(Extractor(expr), is_many=True) assert not field.built assert not field.extractor.built if build_first: field.build() assert field.built assert field.extractor.built assert expect == field.extract(element0) assert field.built assert field.extractor.built
def test_field_extract_without_default(element0, Extractor, expr, build_first): extractor = Field(Extractor(expr)) assert not extractor.built assert not extractor.extractor.built if build_first: extractor.build() assert extractor.built assert extractor.extractor.built with pytest.raises(ExtractError) as catch: extractor.extract(element0) assert extractor.built assert extractor.extractor.built exc = catch.value assert len(exc.extractors) == 1 assert exc.extractors[0] is extractor assert exc.element is element0