繁体   English   中英

如何在没有详细测试进度的情况下显示详细的py.test差异?

[英]How can I show verbose py.test diffs without verbose test progress?

py.test--verbose选项需要在断言失败时显示完全差异,但这也会在执行期间显示每个测试的全名(这是有噪声的)。

我想在断言失败时显示完全差异,但我只想要单身. 在测试运行时出现。 有没有办法做到这一点?

不幸的是,似乎没有配置或命令行标志,因为它在pytest内部是硬编码的:当你定义--verbose ,你得到整个包。 但是,我已经设法提出这个hackish hack。 将以下函数放入conftest.py

def pytest_configure(config):
    terminal = config.pluginmanager.getplugin('terminal')
    BaseReporter = terminal.TerminalReporter
    class QuietReporter(BaseReporter):
        def __init__(self, *args, **kwargs):
            BaseReporter.__init__(self, *args, **kwargs)
            self.verbosity = 0
            self.showlongtestinfo = self.showfspath = False

    terminal.TerminalReporter = QuietReporter 

这基本上是一个猴子修补,依赖pytest内部,不保证与未来的版本兼容,丑陋的罪恶。 您还可以根据命令行参数的其他自定义配置使此修补程序成为条件。

根据@ bereal的回答

(这很好,但应该跟进一些pytest更改)

def pytest_configure(config):
    terminal = config.pluginmanager.getplugin('terminal')

    class QuietReporter(terminal.TerminalReporter):
        @property
        def verbosity(self):
            return 0

        @property
        def showlongtestinfo(self):
            return False

        @property
        def showfspath(self):
            return False

    terminal.TerminalReporter = QuietReporter

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM