使用pytest
时,我只想输出通过的测试数量和失败的测试数量。
如果我在测试文件中调用pytest
,收集10个测试并通过所有测试,则我想输出10,0
。
如果我在测试文件中调用pytest
,收集10个测试,并通过除2外的所有测试,我想输出8,2
。
即使在purest
之外,有没有办法做到这一点?我想它需要一些巧妙的正则表达式,这超出了我的范围。
答案 0 :(得分:2)
您可以在bash
中使用简单的oneliner解决此问题,例如
$ pytest -v | tee >(grep FAILED | wc -l) >(grep PASSED | wc -l) >/dev/null | paste -sd "," -
或者您可以实现一个小插件来进行计数:
# conftest.py
@pytest.mark.tryfirst
def pytest_configure(config):
config.pluginmanager.register(MyPlugin(), 'my_plugin')
class MyPlugin:
def __init__(self):
self.passed = 0
self.failed = 0
def pytest_runtest_logreport(self, report):
if report.when != 'call':
return
if report.passed:
self.passed += 1
elif report.failed:
self.failed += 1
def pytest_sessionfinish(self, session, exitstatus):
print(self.passed, self.failed, sep=',')
在关闭terminal
插件的情况下运行时,此插件会产生所需的输出:
$ pytest -p no:terminal
23,2