1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
|
import pytest
from hamcrest.library.text.stringcontains import contains_string
from hamcrest_unit_test.matcher_test import (
assert_description,
assert_does_not_match,
assert_matches,
assert_mismatch_description,
assert_no_mismatch_description,
)
__author__ = "Jon Reid"
__copyright__ = "Copyright 2011 hamcrest.org"
__license__ = "BSD, see License.txt"
matcher_args = ("EXCERPT",)
@pytest.fixture(scope="module", params=matcher_args)
def matcher(request):
return contains_string(request.param)
TEST_MATCHING_STRINGS = (
("EXCERPTEND",),
("STARTEXCERPTEND",),
("STARTEXCERPT",),
("EXCERPTEXCERPT",),
("EXCERPT",),
)
TEST_MISMATCHING_STRINGS = (("whatever",), ("EXCERP",), (object(),))
@pytest.mark.parametrize(["text"], TEST_MATCHING_STRINGS)
def test_evaluates_true_if_argument_contains_substring(text, matcher):
assert_matches(matcher, text, "assert that %s matches %s" % (text, matcher))
@pytest.mark.parametrize(["text"], TEST_MISMATCHING_STRINGS)
def test_evaluates_false_with_mismatch(text, matcher):
assert_does_not_match(matcher, text, "%s was not in string %s" % (matcher, text))
def testMatcherCreationRequiresString():
with pytest.raises(TypeError):
contains_string(3)
def test_description(matcher):
assert_description("a string containing 'EXCERPT'", matcher)
def test_successful_match_does_not_have_mismatch_description(matcher):
assert_no_mismatch_description(matcher, "EXCERPT")
@pytest.mark.parametrize(["text"], TEST_MISMATCHING_STRINGS)
def test_mismatch_description(matcher, text):
if isinstance(text, str):
check_str = "'%s'" % text
else:
check_str = "%s" % text
assert_mismatch_description("was %s" % check_str, matcher, text)
if __name__ == "__main__":
import unittest
unittest.main()
|