1.动态生成测试类及方法
class MakeTestCases:
testcases = None
def __init__(self):
# 从文件中读取测试用例
self.testcases = yaml_read(FilePath.TESTSUITE)
def make_test_func(self, case):
def func(*args, **kwargs):
"""
测试方法,传入测试步骤,构建测试步骤
"""
pass
return func
def make_test_class(self, *args, **kwargs):
# 自动创建测试类,并继承unittest.TestCase
return type("TestContact", (unittest.TestCase,), {})
def make(self):
#获取动态类
test_class = self.make_test_class()
#用来保存所有测试方法
tests = []
for case in self.testcases:
test_func = self.make_test_func(case['steps'])
test_name = "test_%s" % case['test_name']
#动态生成测试方法
setattr(test_class, test_name, test_func)
# 测试方法保存到此变量,添加到testsuite
tests.append(test_class(test_name))
return test_class
#可以通过多种方法添加
# return tests
2.main.py中组织运行用例
import unittest
from test.make_testcases import MakeTestCases
if __name__ == '__main__':
# 构建用例
cases = MakeTestCases().make()
testsuite = unittest.TestSuite()
# 将用例加载至testsuite内
testsuite.addTests(unittest.TestLoader().loadTestsFromTestCase(cases))
# 此方法适合 make()返回列表的方式
#testsuite.addTests(cases)
# 创建unittest runner
runner = unittest.TextTestRunner(verbosity=2)
# 运行测试
runner.run(testsuite)