From 91ece5ec239e7bf68e928e0377c5335ca5fc214a Mon Sep 17 00:00:00 2001 From: Daniel Hahler Date: Sat, 30 Mar 2019 10:58:12 +0100 Subject: [PATCH] tests: handle new output format with Python 3.8 Fixes https://github.com/pytest-dev/pytest-mock/issues/139. --- test_pytest_mock.py | 43 +++++++++++++++++++++++++++++-------------- 1 file changed, 29 insertions(+), 14 deletions(-) diff --git a/test_pytest_mock.py b/test_pytest_mock.py index 1cb3889..2413593 100644 --- a/test_pytest_mock.py +++ b/test_pytest_mock.py @@ -12,6 +12,9 @@ pytest_plugins = 'pytester' skip_pypy = pytest.mark.skipif(platform.python_implementation() == 'PyPy', reason='could not make work on pypy') +# Python 3.8 changed the output formatting (bpo-35500). +PY38 = sys.version_info >= (3, 8) + @pytest.fixture def needs_assert_rewrite(pytestconfig): @@ -179,7 +182,11 @@ class TestMockerStub: def __test_failure_message(self, mocker, **kwargs): expected_name = kwargs.get('name') or 'mock' - expected_message = 'Expected call: {0}()\nNot called'.format(expected_name) + if PY38: + msg = "expected call not found.\nExpected: {0}()\nActual: not called." + else: + msg = "Expected call: {0}()\nNot called" + expected_message = msg.format(expected_name) stub = mocker.stub(**kwargs) with pytest.raises(AssertionError) as exc_info: stub.assert_called_with() @@ -559,11 +566,20 @@ def test_detailed_introspection(testdir): m.assert_called_once_with('', bar=4) """) result = testdir.runpytest('-s') - result.stdout.fnmatch_lines([ - "*AssertionError: Expected call: mock('', bar=4)*", - "*Actual call: mock('fo')*", + if PY38: + expected_lines = [ + "*AssertionError: expected call not found.", + "*Expected: mock('', bar=4)", + "*Actual: mock('fo')", + ] + else: + expected_lines = [ + "*AssertionError: Expected call: mock('', bar=4)*", + "*Actual call: mock('fo')*", + ] + expected_lines += [ "*pytest introspection follows:*", - '*Args:', + "*Args:", "*assert ('fo',) == ('',)", "*At index 0 diff: 'fo' != ''*", "*Use -v to get the full diff*", @@ -572,7 +588,8 @@ def test_detailed_introspection(testdir): "*Right contains more items:*", "*{'bar': 4}*", "*Use -v to get the full diff*", - ]) + ] + result.stdout.fnmatch_lines(expected_lines) def test_assert_called_with_unicode_arguments(mocker):