事情的起因:
unittest 中有一个loadTestsFromTestCase(self, testCaseClass) 方法,从给定的测试类里面,获取中的所有测试方法,
参数中要带一个类名,但是这个类名我想从终端读取,
我原来的写法是:
TestModel = sys.argv[3]
suite = unittest.TestSuite()
testLoader = unittest.TestLoader()
suite.addTests(unittest.TestLoader().loadTestsFromTestCase(cls.TestModel))
但是这种写法总会报错,TypeError: issubclass() arg 1 must be a class
解决办法:
我们从终端获取的只是一个字符串,而不是一个类对象,要先根据这个类名去获取类,
用到了,python一个内置函数getattr(),用于返回一个对象属性值,
用法如:getattr(sys.modules[__name__],cls.TestModel),具体写法如下:
cls.TestModelobj = getattr(sys.modules[__name__],cls.TestModel)
suite.addTests(unittest.TestLoader().loadTestsFromTestCase(cls.TestModelobj))
本文介绍如何在Python的unittest框架中,从命令行参数动态加载并运行指定的测试类。通过使用getattr()函数,可以正确地从字符串转换为类对象,避免TypeError异常。
347

被折叠的 条评论
为什么被折叠?



