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"
Beispiel #2
0
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
Beispiel #3
0
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
Beispiel #4
0
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
Beispiel #5
0
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
Beispiel #6
0
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
Beispiel #7
0
def test_field_extract(element0, Extractor, expr, expect):
    field = Field(Extractor(expr))
    assert expect == field.extract(element0)
Beispiel #8
0
def test_field_xpath_extract_result_not_list(element0):
    field = Field(XPathExtractor("normalize-space(//div[@class='title'])"))
    assert field.extract(element0) == "Title 1"
Beispiel #9
0
def test_field_extract_with_default(element0, Extractor, expr, expect):
    field = Field(Extractor(expr), default=expect)
    assert expect == field.extract(element0)
Beispiel #10
0
def test_field_extract_with_is_many(element0, Extractor, expr, expect):
    field = Field(Extractor(expr), is_many=True)
    assert expect == field.extract(element0)