我有简单的测试:
def test_noindex(data):
assert 0
Run Code Online (Sandbox Code Playgroud)
我需要通过 py.test 处理这个测试,但完全无声(正如我看到 py.test 对于失败的测试有退出代码 1)。
我试过:
py.test -s test.py
py.test -qq test.py
py.test --capture=no test.py
Run Code Online (Sandbox Code Playgroud)
结果总是一样的:我看到完整的报告。我做错了什么?
pytest.main([params])PS 在windows上运行,在python代码中使用执行pytest
@smassey 的答案在大多数情况下都有效,但由于您从 Python 本身执行 pytest,因此您需要以不同的方式处理问题。
例如,在运行测试时,使用 pythonstdout并重定向到任何内容。stderr这可以通过以下代码来完成:
#!/usr/bin/python
import os
import sys
old_out = sys.stdout
old_err = sys.stderr
sys.stdout = open(os.devnull, 'w')
sys.stderr = open(os.devnull, 'w')
print 'suppressed'
sys.stdout = old_out
sys.stderr = old_err
print 'restored'
Run Code Online (Sandbox Code Playgroud)
open(os.devnull)打开操作系统相当于/dev/null进行写入。让它简单地重定向到None是行不通的,因为sys.stdout需要sys.stderr公开某些方法,这样就print不会抛出异常。
还有一个问题:你为什么要这样做?
| 归档时间: |
|
| 查看次数: |
1951 次 |
| 最近记录: |