Suppose you have this βamazingβ piece of software in a file called main.py :
""" main.py """ def write_to_file(text): with open("output.txt", "w") as h: h.write(text) if __name__ == "__main__": write_to_file("Every great dream begins with a dreamer.")
To test the write_to_file method, you can write something like this to a file in the same folder as test_main.py :
""" test_main.py """ from unittest.mock import patch, mock_open import main def test_do_stuff_with_file(): open_mock = mock_open() with patch("main.open", open_mock, create=True): main.write_to_file("test-data") open_mock.assert_called_with("output.txt", "w") open_mock.return_value.write.assert_called_once_with("test-data")
I always try to avoid writing files to disk, even if it is a temporary folder intended for my tests: without touching the disk, your tests are significantly accelerated, especially if you interact a lot with files in your code.
Enrico M.
source share