• unittest 排序


    解决方案一直接改unittest源代码:

    把排序240行逻辑注释掉,237行获取成员方法按照dict方法替换原有的dir() 方法

     验证效果:

    比较猥琐的解决方案2

    获取成员变量class.__dict__.keys()

    filter过滤符合要求成员,由于3.x成员dict属性是支持有序的

    # coding=utf-8
    import unittest
    from inspect import isfunction

    def raw_members(class_name:object):
    """
    get all unsort members test_* name list
    eg it also work well :
    list(filter(lambda x: not x.startswith("__") and not x.endswith("__")
    and x.startswith("test_") ,TestHetero.__dict__.keys()))

    """
    return list(filter(lambda x: not x.startswith("__") and not x.endswith("__") and x.startswith("test_")
    and isfunction(eval(class_name.__name__+".%s"%x)) and callable(eval(class_name.__name__+".%s"%x )),
    class_name.__dict__.keys()))

    第二步:
    制作suite原始顺序添加的suite:

    suite=unittest.TestSuite()

    suite.addTests([TestHetero("%s"%value) for value in raw_members(TestHetero)])
    print(suite)
    unittest.TextTestRunner(verbosity=2).run(suite)

    结果验证:并没有按照ascii 0-9 A-Z a-z自动排序而是按自己书写顺序执行,改装结束

    <unittest.suite.TestSuite tests=[<__main__.TestHetero testMethod=test_Account>, <__main__.TestHetero testMethod=test_user>, <__main__.TestHetero testMethod=test_001>, <__main__.TestHetero testMethod=test_002>]>
    test_Account (__main__.TestHetero) ... ok
    Account
    user
    001
    test_user (__main__.TestHetero) ... ok
    002
    test_001 (__main__.TestHetero) ... ok
    test_002 (__main__.TestHetero) ... ok

    ----------------------------------------------------------------------
    Ran 4 tests in 0.001s

    OK

    测试类:

    class TestHetero(unittest.TestCase):
    
        @classmethod
        def setUpClass(cls):
            pass
        @classmethod
        def tearDownClass(self):
            pass
    
        def  test_Account(self):
            print("Account")
    
        def test_user(self):
            print("user")
        def test_001(self):
            # unittest.TestLoader.getTestCaseNames()
            print("001")
        def test_002(self):
    
            print("002")
    

      

  • 相关阅读:
    C++类中的封装-9
    递归神经网络
    卷积神经网络
    Tensorflow人工智能神经网络学习
    右键弹出菜单 并动态新增菜单子项
    sql 列转行
    sql 删除表中某字段的重复数据
    疑难问题解决
    jquery ashx交互 返回list 循环json输入信息
    jquery 控件赋值
  • 原文地址:https://www.cnblogs.com/SunshineKimi/p/11882290.html
Copyright © 2020-2023  润新知