从具有参数化类构造函数

时间:2018-06-02 06:58:15

标签: python-unittest nose

我正在研究一种设计模式,使我的python单元测试成为一个POM,到目前为止,我已经在模块HomePageObject.pyFilterPageObject.py中编写了我的页面类,我的基类(对于常见的东西){ {1}} {}} {}} {}} {}}} 在跑步者类中,我使用TestBase从模块的测试用例类中获取所有测试。在两个测试用例模块中,测试类的名称都是相同的“BaseTest.py”,方法名称也是相同的“TestCase1.py” 由于在跑步者中输入名称时这些名称是混乱的,因此只有一项测试正在执行。我希望python扫描我为其中的测试指定的所有模块,并运行那些甚至类的名称相同。 我知道TestCase2.py可能对此有所帮助,但不确定我在这里如何实现它。有什么建议?

BaseTest.py

runner.py

TestCase1.py和TestCase2.py(相同)

loader.getTestCaseNames

runner.py

Test

即使一个测试用例正在通过,也会出现一些错误消息

testName

1 个答案:

答案 0 :(得分:0)

我是通过使用模式搜索测试类的所有模块然后使用__import__(modulename)并使用所需参数调用其Test类来完成此操作的,

这是我的 runner.py

import unittest
import glob
loader = unittest.TestLoader()
suite  = unittest.TestSuite()

test_file_strings = glob.glob('Test*.py')
module_strings = [str[0:len(str)-3] for str in test_file_strings]

for module in module_strings:
    mod = __import__(module)
    test_names =loader.getTestCaseNames(mod.Test)
    for test in test_names:
        suite.addTest(mod.Test(test,"chrome"))

runner = unittest.TextTestRunner()
result = runner.run(suite)

这有效,但仍在寻找一些有组织的解决方案。 (不确定为什么第二次显示Ran 0测试在0.000s)

Finding files... done.
Importing test modules ... ..done.

----------------------------------------------------------------------
Ran 2 tests in 37.491s

OK

----------------------------------------------------------------------
Ran 0 tests in 0.000s

OK