【问题标题】:Python: how to run a single unittest method from within the unittest.main() statement?Python:如何从 unittest.main() 语句中运行单个 unittest 方法?
【发布时间】:2019-12-05 09:59:02
【问题描述】:

假设一个单元测试模块如:

class MyTests(unittest.TestCase)

    def testA(self):
        pass

    def testB(self):
        pass

if __name__ == "__main__":
    unittest.main()

如何将 unittest.main() 语句更改为仅运行 testB?

【问题讨论】:

  • 请注意,这个问题不是关于指定通过命令行运行哪种测试方法。

标签: python unit-testing python-unittest


【解决方案1】:

可以指定docs outline that defaulTest

unittest.main(
  module='__main__', 
  defaultTest=None, 
  argv=None, 
  testRunner=None, 
  testLoader=unittest.defaultTestLoader, 
  exit=True, 
  verbosity=1, 
  failfast=None, 
  catchbreak=None, 
  buffer=None, 
  warnings=None
)

defaultTest 参数是单个测试的名称或 如果没有通过 argv 指定测试名称,则可迭代的测试名称运行。 如果未指定或 None 并且没有通过 argv 提供测试名称,则所有 在模块中找到的测试运行。

【讨论】:

  • 您可能希望在代码中添加一些换行符,以便参数在列中,而不是在需要滚动的长行中。更具体地说,我很高兴您列出了官方文档,因为它将提供更多信息。我想我正在寻找(但没有传达它)是一些示例,因为我已经阅读了文档,但我不清楚 defaultTest 需要“classname.methodname”形式的字符串 - 因此我的回答.
【解决方案2】:

参数 defaultTest 完成这项工作,因为它接受"<classname>.<methodname>" 字符串列表,即:

unittest.main(defaultTest=["MyTests.testB",])

正如 dm03514 正确指出的那样,这在unittest.main() 的官方文档中有所描述,尽管没有具体的使用示例。

【讨论】:

  • 嗨,请详细说明为什么此代码回答了问题。没有上下文的代码 sn-ps 不被认为是好的答案。
猜你喜欢
  • 2014-01-26
  • 2014-06-16
  • 2018-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-04
  • 2016-05-01
  • 2020-10-16
相关资源
最近更新 更多