diff options
author | Irit Katriel <1055913+iritkatriel@users.noreply.github.com> | 2022-01-23 18:42:41 +0000 |
---|---|---|
committer | Irit Katriel <iritkatriel@yahoo.com> | 2022-01-23 18:50:44 +0000 |
commit | 4f13987fe8d9de2297deaf048f47a35d6908e84f (patch) | |
tree | 5501f2a732144881fdc3f517a439ecb8c978131e | |
parent | 94d6434ba7ec3e4b154e515c5583b0b665ab0b09 (diff) | |
download | cpython-git-backport-f7955a8-3.9.tar.gz |
bpo-41403: Improve error message for invalid mock target (GH-30833)backport-f7955a8-3.9
(cherry picked from commit f7955a82e36d4c32ebdd7b7707cdf0e6ffa7a418)
-rw-r--r-- | Lib/unittest/mock.py | 6 | ||||
-rw-r--r-- | Lib/unittest/test/testmock/testpatch.py | 9 | ||||
-rw-r--r-- | Misc/NEWS.d/next/Library/2022-01-23-18-04-45.bpo-41403.SgoHqV.rst | 3 |
3 files changed, 13 insertions, 5 deletions
diff --git a/Lib/unittest/mock.py b/Lib/unittest/mock.py index 5c78274d09..3f5442ed80 100644 --- a/Lib/unittest/mock.py +++ b/Lib/unittest/mock.py @@ -1557,9 +1557,9 @@ class _patch(object): def _get_target(target): try: target, attribute = target.rsplit('.', 1) - except (TypeError, ValueError): - raise TypeError("Need a valid target to patch. You supplied: %r" % - (target,)) + except (TypeError, ValueError, AttributeError): + raise TypeError( + f"Need a valid target to patch. You supplied: {target!r}") getter = lambda: _importer(target) return getter, attribute diff --git a/Lib/unittest/test/testmock/testpatch.py b/Lib/unittest/test/testmock/testpatch.py index 233a5afffa..8ab63a1317 100644 --- a/Lib/unittest/test/testmock/testpatch.py +++ b/Lib/unittest/test/testmock/testpatch.py @@ -1933,8 +1933,13 @@ class PatchTest(unittest.TestCase): def test_invalid_target(self): - with self.assertRaises(TypeError): - patch('') + class Foo: + pass + + for target in ['', 12, Foo()]: + with self.subTest(target=target): + with self.assertRaises(TypeError): + patch(target) def test_cant_set_kwargs_when_passing_a_mock(self): diff --git a/Misc/NEWS.d/next/Library/2022-01-23-18-04-45.bpo-41403.SgoHqV.rst b/Misc/NEWS.d/next/Library/2022-01-23-18-04-45.bpo-41403.SgoHqV.rst new file mode 100644 index 0000000000..ede159b256 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2022-01-23-18-04-45.bpo-41403.SgoHqV.rst @@ -0,0 +1,3 @@ +Make :meth:`mock.patch` raise a :exc:`TypeError` with a relevant error +message on invalid arg. Previously it allowed a cryptic +:exc:`AttributeError` to escape. |