TestSuite vs"测试发现"

时间:2016-02-18 08:32:12

标签: python unit-testing python-unittest

创建TestSuite并将其添加到所有TestCase或仅在TestCases目录中运行python -m unittest discover之间有什么区别吗?

例如,对于包含两个TestCase的目录:test_case_1.pytest_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

我以任何一种方式获得相同的结果,但我很有兴趣知道一种方式是否优先于另一方,以及为什么。

1 个答案:

答案 0 :(得分:2)

我认为支持discover的明显好处是维护。

  • 一个月之后,你摆脱test_case_2 - 上面的一些代码将失败(import),你必须纠正上面的脚本。这很烦人,但不是世界末日。

  • 两个月后,团队成员test_case_3,但他们不知道他们需要将其添加到上面的脚本中。没有测试失败,每个人都很高兴 - 问题是,test_case_3实际上没有任何测试。但是,您可能会反驳说编写新测试是不合理的,而不会注意到它们没有运行。这将带来下一个场景。

  • 更糟糕的是 - 三个月后,有人合并了上述脚本的两个版本,test_case_3再次被挤出。这可能会被忽视。在纠正之前,人们可以根据test_case_3应该检查的内容完成所有他们想要的工作,但这只是未经测试。