【问题标题】:Display number of assertions in python unit tests在 python 单元测试中显示断言数
【发布时间】:2013-12-28 06:15:10
【问题描述】:

phpUnit 显示运行的测试数和作出的断言数。我目前执行python的单元测试的方式,只显示运行的测试数量。有没有办法同时计算断言的数量?

【问题讨论】:

  • 使用--help 运行您的测试,您将学到一些有用的知识,包括如何获得更详细的统计数据。
  • @9000:嗯,我喜欢 --verbose 标志。它并没有完全达到我的目标,但它会在其他时候派上用场!
  • @DudeOnRock 我也和你有同样的问题,我想在 python unittest 中获取断言统计信息,而不仅仅是案例数。我怎样才能做到这一点?希望您回复,谢谢。
  • @DudeOnRock 我支持这个。 unittest for C(-like) 程序打印各种有趣的统计数据。可悲的是,python 版本似乎根本不支持这一点。

标签: python unit-testing assertions


【解决方案1】:

如果您愿意使用 pytest 运行测试,它可以为您计算断言。

有一个hook 可以在你的conftest.py 文件中实现,它会为每个通过的断言调用。您可以计算被调用的次数,然后在摘要中打印出来。这不会计算对 unittest.TestCase.assert...() 函数的调用,只计算 assert 语句。

要启用挂钩,请编写一个 conftest.py 文件,如下所示:

assertion_count = 0


def pytest_assertion_pass(item, lineno, orig, expl):
    global assertion_count
    assertion_count += 1


def pytest_terminal_summary(terminalreporter, exitstatus, config):
    print(f'{assertion_count} assertions tested.')

然后在您的pytest.ini 文件中启用挂钩:

[pytest]
enable_assertion_pass_hook=true

您可能还会发现assertion compare hook 很有用。

毕竟,我不确定断言的数量是否是衡量测试质量的可靠指标。您可能希望使用MutPymutmut 进行突变测试。

【讨论】:

  • 谢谢!精确且有效。我将conftest.pypytest.ini 放在与测试相同的文件夹中,我必须删除该文件夹中的__pycache__ 文件夹才能使其正常工作,否则它将打印0 assertions tested.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多