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 first I thought about just collecting the outputs of do_something in a string and then returning it, to print and test the whole output together. But it’s not always convinient because such loops could cause your buffer string to get very big, depending on the circumstances. So what can you do to test the output, when it is printed and not returned?
printprints tosys.stdout, which you can reassign to your own object if you wish. The only thing your object needs is awritefunction which takes a single string argument.Since Python 2.6 you may also change
printto be a function rather than a language construct by addingfrom __future__ import print_functionto the top of your script. This way you can overrideprintwith your own function.