def test_field_with_convertor(): f = Field(D(), convertor=lambda x: str(x).upper()) assert f.type is None assert f.extract("abc") == "ABC" f = Field(D(), type=str, convertor=lambda x: str(x).upper()) assert f.type is str assert f.extract("abc") == "ABC"
def test_field_extract_without_default(element0, Extractor, expr): extractor = Field(Extractor(expr)) with pytest.raises(ExtractError) as catch: extractor.extract(element0) exc = catch.value assert len(exc.extractors) == 1 assert exc.extractors[0] is extractor assert exc.element is element0
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
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_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_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(element0, Extractor, expr, expect): field = Field(Extractor(expr)) assert expect == field.extract(element0)
def test_field_xpath_extract_result_not_list(element0): field = Field(XPathExtractor("normalize-space(//div[@class='title'])")) assert field.extract(element0) == "Title 1"
def test_field_extract_with_default(element0, Extractor, expr, expect): field = Field(Extractor(expr), default=expect) assert expect == field.extract(element0)
def test_field_extract_with_is_many(element0, Extractor, expr, expect): field = Field(Extractor(expr), is_many=True) assert expect == field.extract(element0)