仅返回通过的测试数量和失败的测试数量

时间:2019-09-13 05:41:49

标签: python pytest

使用pytest时,我只想输出通过的测试数量和失败的测试数量。

如果我在测试文件中调用pytest,收集10个测试并通过所有测试,则我想输出10,0

如果我在测试文件中调用pytest,收集10个测试,并通过除2外的所有测试,我想输出8,2

即使在purest之外,有没有办法做到这一点?我想它需要一些巧妙的正则表达式,这超出了我的范围。

1 个答案:

答案 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