eri*_*ork 18 python unit-testing stdout
你想unittest为这样的函数编写-cases:
def test_me(a):
for b in c:
print do_something(a,b)
Run Code Online (Sandbox Code Playgroud)
起初我想过只收集do_something字符串中的输出然后返回它,一起打印和测试整个输出.但它并不总是很方便,因为这样的循环可能会导致缓冲区字符串变得非常大,具体取决于具体情况.那么,在打印并且不返回输出时,您可以做些什么来测试输出?
Emi*_*röm 12
print打印到sys.stdout,如果您愿意,可以将其重新分配给您自己的对象.您的对象唯一需要的是一个write带有单个字符串参数的函数.
从Python 2.6开始,您可以print通过添加from __future__ import print_function到脚本顶部来更改为函数而不是语言构造.这样您就可以print使用自己的功能覆盖.
在 Python 3 中,它很容易unittest.mock在内置print函数上使用:
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()]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8612 次 |
| 最近记录: |