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)

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

    谁写在上面就先执行谁。

  • 相关阅读:
    为什么学微信小程序开发
    mac 上配置sublime text3插件
    获取元素的宽度和高度
    移动端页面SEO优化需要注意的10个要点
    gulp详细入门教程
    HTTP协议详解
    深入了解 Flexbox 伸缩盒模型
    移动前端之viewport
    如何设置“用eclipse开发时自动在顶端产生import”?
    认识 java JVM虚拟机选项 Xms Xmx PermSize MaxPermSize 区别
  • 原文地址:https://www.cnblogs.com/ydf0509/p/9230792.html
Copyright © 2011-2022 走看看