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

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

不幸的是,似乎没有配置或命令行标志,因为它是硬编码的 deep inside 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内部,不保证与未来的版本兼容,丑陋的罪恶.您还可以根据命令行参数的其他自定义配置使此修补进程成为条件.

翻译自:https://stackoverflow.com/questions/30938780/how-can-i-show-verbose-py-test-diffs-without-verbose-test-progress