73 lines
2.6 KiB
Diff
73 lines
2.6 KiB
Diff
From 91ece5ec239e7bf68e928e0377c5335ca5fc214a Mon Sep 17 00:00:00 2001
|
|
From: Daniel Hahler <git@thequod.de>
|
|
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):
|