【问题标题】:unittest: increase module's verbosity when testedunittest:测试时增加模块的详细程度
【发布时间】:2012-10-23 15:40:10
【问题描述】:

我有一个模块mymodule,我用unittest 对其进行测试。当处于详细模式(例如mymodule.set_verbose(True))时,模块会记录到标准输出诊断消息,否则保持沉默。我希望当我在主程序中导入模块时,它处于静默模式,而当unittest 运行时,它是冗长的。

我试图在 unittest 主循环中破解它,但它不起作用

if __name__ == "__main__":
  mymodule.set_verbose( True )
  unittest.main() 
# apparently, modules are loaded on each test separately

How to increase verbosity in python unittest? 没有帮助。

【问题讨论】:

标签: python unit-testing


【解决方案1】:
if __name__ == '__main__':
    unittest.main(verbosity=2)

见:https://docs.python.org/2/library/unittest.html

【讨论】:

  • 其他人都知道,verbosity 参数直到 Python 2.7 才添加。
【解决方案2】:

您也可以直接使用unittest.TextTestRunner 来运行您的测试。这允许设置详细级别:

suite = unittest.TestLoader().loadTestsFromTestCase(TestCaseClass)
unittest.TextTestRunner(verbosity=2).run(suite)

这将从TestCaseClass 中运行您的所有测试。

【讨论】:

  • Verbosity 传递给TextTestRunner 用于测试运行器本身,与被测试模块中定义的set_verbose() 函数无关。
【解决方案3】:

您可以从单元测试的setUp 方法中调用set_verbose

【讨论】:

  • 当然,这么简单。谢谢。顺便说一句,我可以在更高级别上进行设置,所以我不需要在每个测试类中运行它吗?我可以通过继承 TestCase ...,但也许有一些默认的 unittest-ish 方式
  • @JakubM。有,它被称为setUpModule() - 请参阅this 答案。
  • @PiotrDobrogost: dzięki,显然值得不时阅读文档页
猜你喜欢
  • 2011-09-19
  • 1970-01-01
  • 2022-08-23
  • 2011-09-20
  • 1970-01-01
  • 2017-08-17
  • 1970-01-01
  • 2017-07-28
  • 1970-01-01
相关资源
最近更新 更多