zoukankan      html  css  js  c++  java
  • 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)

    这样就是按代码顺序执行了,不需要在函数上加个数字做记号了。

    谁写在上面就先执行谁。

  • 相关阅读:
    软件工程
    ROR
    全息技术(Holographic technique)
    VR技术、AR技术、MR技术
    人工智能(AI)
    机器学习(Machine Learning)
    hdoj Scaena Felix
    周赛题解
    Good Luck in CET-4 Everybody!(博弈)
    Paths on a Grid(规律)
  • 原文地址:https://www.cnblogs.com/ydf0509/p/9230792.html
Copyright © 2011-2022 走看看