mirror of
https://github.com/python/cpython.git
synced 2025-07-24 11:44:31 +00:00
bpo-38157: Add example about per file output for mock_open. (#16090)
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>
This commit is contained in:
parent
3e53ac9903
commit
e183a71eef
1 changed files with 24 additions and 0 deletions
|
@ -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
|
||||
----------------
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue