正常是一个测试类中按函数名字运行,
下面修改成直接按每个测试方法的代码顺序执行
文件 unittest_util.py
import timeimport unittestfrom app.utils.utils_ydf import mixinsskip = unittest.skipclass TestCase(mixins.LoggerMixin, unittest.TestCase): # 不需要日志的人,可以不继承第一个类。 @classmethod def tearDownClass(cls): cls.logger.debug('---------------------------------所有用例完成-----------------------------') time.sleep(200000)def run(test_class): """ 测试用例执行顺序使用函数的所处行数来,即直上至下,不按照默认的函数名字来执行 :param test_class: 测试用例的类名 :return: """ func_first_no = lambda f: getattr(test_class, f).__code__.co_firstlineno def func_first_no_cmp(funa, funb): if func_first_no(funa) > func_first_no(funb): return 1 elif func_first_no(funa) == func_first_no(funb): return 0 else: return -1 loader = unittest.TestLoader() loader.sortTestMethodsUsing = func_first_no_cmp case1 = loader.loadTestsFromTestCase(test_class) suite = unittest.TestSuite([case1, ]) unittest.TextTestRunner(verbosity=2).run(suite) # unittest.main(testLoader=loader, verbosity=2) # 也可以
使用方法示例,import 这个文件
class _Test(unittest_util.TestCase): @classmethod def setUpClass(cls): cls.deploy_ydf = HotelFaresDeploy('ydf') cls.deploy_test = HotelFaresDeploy('test') @unittest_util.skip def test_run_all_thread(self): """重新运行所有""" self.deploy_test.run_pyhton_file(ctrip) self.deploy_test.run_pyhton_file(elong) # @unittest_util.skip def test_query_process_thread(self): """查询所有thread名称的进程""" self.deploy_test.query_process('_thread')if __name__ == '__main__': unittest_util.run(_Test)
这样就是按代码顺序执行了,不需要在函数上加个数字做记号了。
谁写在上面就先执行谁。