如何使用Python单元测试测试套件选择特定测试
我将Python单元测试代码组织如下:如何使用Python单元测试测试套件选择特定测试,python,unit-testing,test-suite,Python,Unit Testing,Test Suite,我将Python单元测试代码组织如下: Maindir | |--Dir1 | | | |-- test_A.py | |-- test_B.py | |-- test_C.py | |--Dir2 | ... 我想你明白了。在每个Dirx目录中,我都有一个名为suite.py的文件,它将给定目录中的测试集合在一起(因此您可以选择特定测试,省略其他测试,等等)。这些文件看起来如下(在选择所有测试的情况下,它们也可能只选择一个
Maindir
|
|--Dir1
| |
| |-- test_A.py
| |-- test_B.py
| |-- test_C.py
|
|--Dir2
| ...
我想你明白了。在每个Dirx
目录中,我都有一个名为suite.py
的文件,它将给定目录中的测试集合在一起(因此您可以选择特定测试,省略其他测试,等等)。这些文件看起来如下(在选择所有测试的情况下,它们也可能只选择一个子集测试)(也考虑测试单元测试):
import test_A
import test_B
import test_C
suite1 = test.TestSuite()
suite1.addTests(test.TestLoader().loadTestsFromTestCase(test_A.MyTest))
suite1.addTests(test.TestLoader().loadTestsFromTestCase(test_B.MyTest))
suite1.addTests(test.TestLoader().loadTestsFromTestCase(test_C.MyTest))
Maindir
目录中的主运行程序execall.py
,如下所示:
from Dir1.suite import suite1
from Dir2.suite import suite2
suite_all = test.TestSuite([
suite1,
suite2])
if __name__ == '__main__':
test.main(defaultTest='suite_all')
现在,我可以执行以下操作:
- 运行所有测试:“execall.py”(如文档所示)
- 运行特定套件:
(如文档所示)execall.py suite1
'TestSuite'对象没有属性“xxx”
execall.py suite1.test_A
execall.py suite1.test_A.test1
execall.py test_A
execall.py test_A.test1
execall.py-h
给出了如何在测试用例中运行单个测试或测试的非常具体的示例,但在我的例子中,这似乎不起作用。一种方法是编写自己的测试加载程序。我强烈建议采用中的机制
基本思想是:
unittest.TestSuite()
对象以及包含所需测试的所有Python模块。这可以通过扫描目录中的test_XXX.py
文件来完成(只需通过startswith('test')
、regexp等检查它们)
unittest.TestLoader
和重写loadestsfromname(self、name、module)
这将使用步骤1中生成的testsuite。例如,在烧瓶中:
for testcase, testname in find_all_tests(suite):
if testname == name or \
testname.endswith('.' + name) or \
('.' + name + '.') in testname or \
testname.startswith(name + '.'):
all_tests.append(testcase)
这允许按Python模块名称、测试套件(测试类)名称或仅按测试用例名称加载测试
但这是一个更大的扩展,使用不同的框架。。。太超出范围了不,这是一个开源的、BSD许可的框架,所以只需要从那里获取您需要的东西。事实上,我在自己的框架中使用了一点修改过的Flask的testsuite方法。但我似乎需要
werkzeug
来让它工作,或者不是真的?Flask确实需要werkzeug,但我说的是使用它的一小部分,一种机制和想法,一个概念,一种方式,…-你可以说,测试是如何在烧瓶中进行的。在最简单的情况下,您必须采用testsuite中的单个\uuuuu init\uuuuuu.py
。阅读其他程序员的代码可以更快地提高技能。Armin Ronacher,《Flask》的作者是Python界非常知名的人物,从他的代码中学习是一个非常愉快的过程。好的,我想我会尝试一下。谢谢