正常是一个测试类中按函数名字运行,
下面修改成直接按每个测试方法的代码顺序执行
文件 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)
这样就是按代码顺序执行了,不需要在函数上加个数字做记号了。
谁写在上面就先执行谁。