事情的起因:
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))