测试套件与 "test discover"
TestSuite vs "test discover"
创建一个 TestSuite 并将所有 TestCases 添加到其中,或者只是 运行ning python -m unittest discover
在 TestCases 目录中有什么区别吗?
例如,对于包含两个测试用例的目录: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
.
无论哪种方式,我都得到了相同的结果,但我很想知道一种方式是否优于另一种方式,以及为什么。
我认为支持 discover
的一个明显好处是维护。
一个月后,您摆脱了 test_case_2
- 您上面的某些代码将失败(import
),您必须更正上面的脚本。这很烦人,但不是世界末日。
两个月后,您团队中有人制作了 test_case_3
,但没有意识到他们需要将其添加到上面的脚本中。没有测试失败,每个人都很高兴 - 问题是,test_case_3
中没有任何东西真正运行。但是,您可能会反驳说编写新测试是不合理的,并且没有注意到它们不是 运行。这就引出了下一个场景。
更糟糕的是 - 三个月后,有人合并了您上述脚本的两个版本,test_case_3
再次被挤出。这可能会被忽视。在它得到纠正之前,人们可以随心所欲地处理 test_case_3
应该检查的内容,但它只是未经测试。
创建一个 TestSuite 并将所有 TestCases 添加到其中,或者只是 运行ning python -m unittest discover
在 TestCases 目录中有什么区别吗?
例如,对于包含两个测试用例的目录: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
.
无论哪种方式,我都得到了相同的结果,但我很想知道一种方式是否优于另一种方式,以及为什么。
我认为支持 discover
的一个明显好处是维护。
一个月后,您摆脱了
test_case_2
- 您上面的某些代码将失败(import
),您必须更正上面的脚本。这很烦人,但不是世界末日。两个月后,您团队中有人制作了
test_case_3
,但没有意识到他们需要将其添加到上面的脚本中。没有测试失败,每个人都很高兴 - 问题是,test_case_3
中没有任何东西真正运行。但是,您可能会反驳说编写新测试是不合理的,并且没有注意到它们不是 运行。这就引出了下一个场景。更糟糕的是 - 三个月后,有人合并了您上述脚本的两个版本,
test_case_3
再次被挤出。这可能会被忽视。在它得到纠正之前,人们可以随心所欲地处理test_case_3
应该检查的内容,但它只是未经测试。