You want to write unittest
-cases for a function like that:
def test_me(a):
for b in c:
print do_something(a,b)
At firs
In Python 3 it's easy to use unittest.mock
on the builtin print
function:
from unittest.mock import patch, call
@patch('builtins.print')
def test_print(mocked_print):
print('foo')
print()
assert mocked_print.mock_calls == [call('foo'), call()]
print prints to sys.stdout, which you can reassign to your own object if you wish. The only thing your object needs is a write
function which takes a single string argument.
Since Python 2.6 you may also change print
to be a function rather than a language construct by adding from __future__ import print_function
to the top of your script. This way you can override print
with your own function.