This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author xtreak
Recipients cjw296, docs@python, lisroach, mariocj89, michael.foord, xtreak
Date 2019-09-13.10:54:43
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1568372083.76.0.737420692229.issue38157@roundup.psfhosted.org>
In-reply-to
Content
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"
History
Date User Action Args
2019-09-13 10:54:43xtreaksetrecipients: + xtreak, cjw296, michael.foord, docs@python, lisroach, mariocj89
2019-09-13 10:54:43xtreaksetmessageid: <1568372083.76.0.737420692229.issue38157@roundup.psfhosted.org>
2019-09-13 10:54:43xtreaklinkissue38157 messages
2019-09-13 10:54:43xtreakcreate