Пример #1
0
    def it_supports_ignoring_values_with_anything():
        def _fails():
            expect({
                'foo': 2,
                'bar': None
            }) == {
                'foo': 1,
                'bar': expect.anything
            }

        with pytest.raises(AssertionError):
            _fails()
        assert "'bar': <anything>" in fail_msg(_fails), fail_msg(_fails)
Пример #2
0
    def it_shows_diff_when_strings_differ():
        def _fails():
            expect('foo\nbar') == 'foo\nbaz'

        with pytest.raises(AssertionError):
            _fails()
        assert fail_msg(_fails) == (
            "Expected 'foo\\nbaz' but got 'foo\\nbar'\n"
            "Diff:\n"
            "@@ -1,2 +1,2 @@\n"
            " foo\n"
            "-baz\n"
            "+bar"), fail_msg(_fails)
    def they_adjust_failure_message_for_expectation_name():
        def can_do_something(thing):
            return False

        def will_do_something(thing):
            return False

        for predicate in [can_do_something, will_do_something]:
            add_expectation(predicate)

        assert fail_msg(expect('walrus').can_do_something) == (
            "Expected that 'walrus' can do something, but it can't")
        assert fail_msg(expect('walrus').will_do_something) == (
            "Expected that 'walrus' will do something, but it won't")
    def they_have_default_failure_message():
        def predicate_with_bad_name(thing):
            return False

        add_expectation(predicate_with_bad_name)
        assert fail_msg(expect('walrus').predicate_with_bad_name) == (
            "Expected that 'walrus' predicate with bad name, but got False")
Пример #5
0
    def it_can_expect_equality():
        expect(2) == 1 + 1

        def _fails():
            expect(1) == 2

        with pytest.raises(AssertionError):
            _fails()
        assert fail_msg(_fails) == 'Expected 2 but got 1'
Пример #6
0
    def it_can_expect_inequality():
        expect(1) != 2

        def _fails():
            expect(1) != 1

        with pytest.raises(AssertionError):
            _fails()
        assert fail_msg(_fails) == 'Expected anything except 1 but got it'
Пример #7
0
    def it_can_expect_containment():
        expect([1]).contains(1)

        def _fails():
            expect([2]).contains(1)

        with pytest.raises(AssertionError):
            _fails()
        assert fail_msg(_fails) == ("Expected [2] to contain 1 but it didn't")
Пример #8
0
    def it_can_expect_exclusion():
        expect([1]).excludes(0)

        def _fails():
            expect([1]).excludes(1)

        with pytest.raises(AssertionError):
            _fails()
        assert fail_msg(_fails) == ("Expected [1] to exclude 1 but it didn't")
Пример #9
0
    def it_can_expect_non_containment():
        expect([1]).does_not_contain(0)

        def _fails():
            expect([1]).does_not_contain(1)

        with pytest.raises(AssertionError):
            _fails()
        assert fail_msg(_fails) == ("Expected [1] not to contain 1 but it did")
Пример #10
0
    def it_can_expect_less_than():
        expect(1) < 2

        def _fails():
            expect(1) < 0

        with pytest.raises(AssertionError):
            _fails()
        assert fail_msg(_fails) == 'Expected something less than 0 but got 1'
Пример #11
0
    def it_can_expect_identity_with_true():
        expect(1 < 2).is_(True)

        def _fails():
            expect(1 > 2).is_(True)

        with pytest.raises(AssertionError):
            _fails()
        assert fail_msg(_fails) == (
            "Expected condition to be True, but it was False")
Пример #12
0
    def it_can_require_failure_messages():
        def _fails():
            with expect.raises(ValueError, 'my message'):
                raise ValueError('wrong message')

        with pytest.raises(AssertionError):
            _fails()
        assert fail_msg(_fails) == (
            "Expected ValueError('my message') but got ValueError('wrong message')"
        )
Пример #13
0
    def it_requires_exceptions_to_be_raised():
        def _expects_raise_but_doesnt_get_it():
            with expect.raises(KeyError):
                pass

        with pytest.raises(AssertionError):
            _expects_raise_but_doesnt_get_it()

        assert fail_msg(_expects_raise_but_doesnt_get_it) == (
            'Expected an exception of type KeyError but got none')
Пример #14
0
    def it_can_expect_greater_than():
        expect(2) > 1

        def _fails():
            expect(0) > 1

        with pytest.raises(AssertionError):
            _fails()
        assert fail_msg(_fails) == (
            'Expected something greater than 1 but got 0')
    def they_can_fail():
        add_expectation(is_a_potato)

        def _fails():
            expect('not a potato').is_a_potato()

        with pytest.raises(AssertionError):
            _fails()
        assert fail_msg(_fails) == (
            "Expected that 'not a potato' is a potato, but it isn't")
Пример #16
0
    def it_can_expect_startswith():
        expect("fooBar").startswith("foo")

        def _fails():
            expect("fooBar").startswith("Foo")

        with pytest.raises(AssertionError):
            _fails()
        assert fail_msg(_fails) == (
            "Expected 'fooBar' to start with 'Foo' but it didn't")
Пример #17
0
    def it_can_expect_nonidentity_with_false():
        expect(1 < 2).is_not(False)

        def _fails():
            expect(1 > 2).is_not(False)

        with pytest.raises(AssertionError):
            _fails()
        assert fail_msg(_fails) == (
            "Expected condition to not be False, but it was")
Пример #18
0
    def it_can_expect_endswith():
        expect("fooBar").endswith("Bar")

        def _fails():
            expect("fooBar").endswith("bar")

        with pytest.raises(AssertionError):
            _fails()
        assert fail_msg(_fails) == (
            "Expected 'fooBar' to end with 'bar' but it didn't")
Пример #19
0
    def it_shows_optimized_diff_for_ordereddict_on_python36():
        actual = [OrderedDict(a=1, b=2, c=3, d=4, e=5, f=6)]
        expected = [dict(a=1, b=22, c=3, d=4, f=6, g=7)]
        expect.MIN_DIFF_SIZE = 10

        def _fails():
            expect(actual) == expected

        with pytest.raises(AssertionError):
            _fails()
        assert fail_msg(_fails) == (
            "Expected "
            "[{'a': 1, 'b': 22, 'c': 3, 'd': 4, 'f': 6, 'g': 7}] but got "
            "[{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5, 'f': 6}]\n"
            "Diff:\n"
            "@@ -1 +1 @@\n"
            "-[{'a': 1, 'b': 22, 'c': 3, 'd': 4, 'f': 6, 'g': 7}]\n"
            "+[{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5, 'f': 6}]"
        ), fail_msg(_fails)
Пример #20
0
    def it_can_expect_endswith_ignoring_case():
        expect("fooBar").iendswith("bar")

        def _fails():
            expect("fooBar").iendswith("qux")

        with pytest.raises(AssertionError):
            _fails()
        assert fail_msg(_fails) == (
            "Expected 'fooBar' to end with 'qux' (ignoring case) but it didn't"
        )
Пример #21
0
    def it_can_expect_exclusion_ignoring_case():
        expect([1]).iexcludes(0)

        def _fails():
            expect([1]).iexcludes(1)

        with pytest.raises(AssertionError):
            _fails()
        assert fail_msg(_fails) == (
            "Expected [1] to exclude 1 (ignoring case) but it didn't"
        )
Пример #22
0
    def it_can_expect_identity_with_none():
        data = {'a': 1}

        expect(data.get('b')).is_(None)

        def _fails():
            expect(data.get('a')).is_(None)

        with pytest.raises(AssertionError):
            _fails()
        assert fail_msg(_fails) == ("Expected value to be None, but it was 1")
Пример #23
0
    def it_can_expect_instance_for_multiple_types():
        expect('str').isinstance((str, bytes))

        def _fails():
            expect('str').isinstance((int, tuple))

        with pytest.raises(AssertionError):
            _fails()
        assert fail_msg(_fails) == (
            'Expected an instance of int or tuple but got an instance of str'
        )
Пример #24
0
    def it_can_expect_containment_ignoring_case():
        expect("fooBar").icontains("FooBAR")

        def _fails():
            expect("fooBar").icontains("Qux")

        with pytest.raises(AssertionError):
            _fails()
        assert fail_msg(_fails) == (
            "Expected 'fooBar' to contain 'Qux' (ignoring case) but it didn't"
        )
Пример #25
0
    def it_can_expect_instance():
        expect(1).isinstance(int)

        def _fails():
            expect(1).isinstance(str)

        with pytest.raises(AssertionError):
            _fails()
        assert fail_msg(_fails) == (
            'Expected an instance of str but got an instance of int'
        )
Пример #26
0
    def it_can_expect_greater_than_or_equal():
        expect(1) >= 1
        expect(2) >= 1

        def _fails():
            expect(1) >= 2

        with pytest.raises(AssertionError):
            _fails()
        assert fail_msg(_fails) == (
            'Expected something greater than or equal to 2 but got 1')
Пример #27
0
    def it_can_expect_less_than_or_equal():
        expect(1) <= 1
        expect(1) <= 2

        def _fails():
            expect(2) <= 1

        with pytest.raises(AssertionError):
            _fails()
        assert fail_msg(_fails) == (
            'Expected something less than or equal to 1 but got 2')
Пример #28
0
    def it_shows_diff_for_large_reprs():
        sequence = list(range(1000, 1050))
        big_list = sequence[:20] + [1019] + sequence[20:]

        def _fails():
            expect(big_list) == sequence

        with pytest.raises(AssertionError):
            _fails()
        assert fail_msg(_fails) == ("Expected {0} but got {1}\n"
                                    "Diff:\n"
                                    "@@ -17,6 +17,7 @@\n"
                                    "  1016,\n"
                                    "  1017,\n"
                                    "  1018,\n"
                                    "+ 1019,\n"
                                    "  1019,\n"
                                    "  1020,\n"
                                    "  1021,").format(
                                        repr(sequence),
                                        repr(big_list)), fail_msg(_fails)
Пример #29
0
    def it_optimizes_exclusion_message_for_multiline_strings():
        expect("<p>\nHello, world!\n</p>\n").excludes("Foobar")

        def _fails():
            expect("<p>\nHello, world!\n</p>\n").excludes("Hello")

        with pytest.raises(AssertionError):
            _fails()
        assert fail_msg(_fails) == (
            "Given text:\n\n"
            "<p>\nHello, world!\n</p>\n\n"
            "Expected to exclude 'Hello' but didn't"
        )
Пример #30
0
    def it_optimizes_non_containment_message_for_multiline_strings():
        expect("<p>\nHello, world!\n</p>\n").does_not_contain("Foobar")

        def _fails():
            expect("<p>\nHello, world!\n</p>\n").does_not_contain("Hello")

        with pytest.raises(AssertionError):
            _fails()
        assert fail_msg(_fails) == (
            "Given text:\n\n"
            "<p>\nHello, world!\n</p>\n\n"
            "Expected not to contain 'Hello' but did"
        )