summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>2023-09-07 09:32:28 (GMT)
committerGitHub <noreply@github.com>2023-09-07 09:32:28 (GMT)
commitf6d70e9a18873759ea1a68d749a79c3c11383a4d (patch)
treec5133db6d25931db95c23a319674e381323bbd2a
parent883ff44f0d370d1f7c48bada494e0b34effa3019 (diff)
downloadcpython-f6d70e9a18873759ea1a68d749a79c3c11383a4d.zip
cpython-f6d70e9a18873759ea1a68d749a79c3c11383a4d.tar.gz
cpython-f6d70e9a18873759ea1a68d749a79c3c11383a4d.tar.bz2
[3.11] bpo-38157: Add example about per file output for mock_open. (GH-16090) (#109072)
Co-authored-by: Karthikeyan Singaravelan <tir.karthi@gmail.com> Co-authored-by: Stanley <46876382+slateny@users.noreply.github.com> Co-authored-by: Jelle Zijlstra <jelle.zijlstra@gmail.com> Co-authored-by: Hugo van Kemenade <hugovk@users.noreply.github.com>
-rw-r--r--Doc/library/unittest.mock-examples.rst24
1 files changed, 24 insertions, 0 deletions
diff --git a/Doc/library/unittest.mock-examples.rst b/Doc/library/unittest.mock-examples.rst
index 744fc9d..34f343e 100644
--- a/Doc/library/unittest.mock-examples.rst
+++ b/Doc/library/unittest.mock-examples.rst
@@ -360,6 +360,30 @@ of arbitrary attributes as well as the getting of them then you can use
*spec_set* instead of *spec*.
+Using side_effect to return per file content
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+:func:`mock_open` is used to patch :func:`open` method. :attr:`~Mock.side_effect`
+can be used to return a new Mock object per call. This can be used to return different
+contents per file stored in a dictionary::
+
+ DEFAULT = "default"
+ data_dict = {"file1": "data1",
+ "file2": "data2"}
+
+ def open_side_effect(name):
+ return mock_open(read_data=data_dict.get(name, DEFAULT))()
+
+ with patch("builtins.open", side_effect=open_side_effect):
+ with open("file1") as file1:
+ assert file1.read() == "data1"
+
+ with open("file2") as file2:
+ assert file2.read() == "data2"
+
+ with open("file3") as file2:
+ assert file2.read() == "default"
+
Patch Decorators
----------------