python修改python unittest的运行顺序
正常是一个测试类中按函数名字运行,
下面修改成直接按每个测试方法的代码顺序执行
文件 unittest_util.py
import time import unittest from app.utils.utils_ydf import mixins skip = unittest.skip class 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)
这样就是按代码顺序执行了,不需要在函数上加个数字做记号了。
谁写在上面就先执行谁。
反对极端面向过程编程思维方式,喜欢面向对象和设计模式的解读,喜欢对比极端面向过程编程和oop编程消耗代码代码行数的区别和原因。致力于使用oop和36种设计模式写出最高可复用的框架级代码和使用最少的代码行数完成任务,致力于使用oop和设计模式来使部分代码减少90%行,使绝大部分py文件最低减少50%-80%行的写法。