[docs] [issue38157] Add a recipe in unittest.mock examples about mock_open per file

Karthikeyan Singaravelan report at bugs.python.org
Fri Sep 13 06:54:43 EDT 2019


New submission from Karthikeyan Singaravelan <tir.karthi at gmail.com>:

With issue37669 it was proposed to refactor out the mock_open handler to return different mocks per file and an API change to make sure read_data accepts a dictionary of file and return values it can only land on master if accepter. It's already possible now with using side_effect to return per file content. Adding it would be a good example like below so that users can know this usage. I can prepare a PR for this.


from unittest.mock import mock_open, patch

DEFAULT_MOCK_DATA = "default mock data"
data_dict = {"file1": "data1",
             "file2": "data2"}

def open_side_effect(name):
    return mock_open(read_data=data_dict.get(name, DEFAULT_MOCK_DATA))()

with patch(f"{__name__}.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("file1") as file3:
                assert file3.read(1) == "d"

        assert file1.read() == ""

    with open("defaultfile") as file4:
        assert file4.read() == "default mock data"

----------
assignee: docs at python
components: Documentation
messages: 352285
nosy: cjw296, docs at python, lisroach, mariocj89, michael.foord, xtreak
priority: normal
severity: normal
status: open
title: Add a recipe in unittest.mock examples about mock_open per file
type: behavior
versions: Python 3.7, Python 3.8, Python 3.9

_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue38157>
_______________________________________


More information about the docs mailing list