创建TestSuite并将其添加到所有TestCase或仅在TestCases目录中运行python -m unittest discover
之间有什么区别吗?
例如,对于包含两个TestCase的目录:test_case_1.py
和test_case_2.py
:
import unittest
from test_case_1 import TestCaseClass as test1
from test_case_2 import TestCaseClass as test2
suite = unittest.TestSuite()
suite.addTest(unittest.makeSuite(test1))
suite.addTest(unittest.makeSuite(test2))
unittest.TextTestRunner().run(suite)
或只是cd
进入该目录并运行python -m unittest discover
。
我以任何一种方式获得相同的结果,但我很有兴趣知道一种方式是否优先于另一方,以及为什么。
答案 0 :(得分:2)
我认为支持discover
的明显好处是维护。
一个月之后,你摆脱test_case_2
- 上面的一些代码将失败(import
),你必须纠正上面的脚本。这很烦人,但不是世界末日。
两个月后,团队成员test_case_3
,但他们不知道他们需要将其添加到上面的脚本中。没有测试失败,每个人都很高兴 - 问题是,test_case_3
实际上没有任何测试。但是,您可能会反驳说编写新测试是不合理的,而不会注意到它们没有运行。这将带来下一个场景。
更糟糕的是 - 三个月后,有人合并了上述脚本的两个版本,test_case_3
再次被挤出。这可能会被忽视。在纠正之前,人们可以根据test_case_3
应该检查的内容完成所有他们想要的工作,但这只是未经测试。