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

      

  • 相关阅读:
    如何在DOS中枚举PCI设备
    [Color]深入学习YCbCr色彩模型
    [Imm]Imm API学习笔记——输入法属性
    VBE_INFO(获取VBE信息)
    用VB写高效的图像处理程序 V2.0(2006524)
    ANSI环境下支持多语言输入的单行文本编辑器 V0.01
    分析外星人计算Pi的程序
    位运算模块mBit.bas
    [FileFormat]用VB写的高速GIF、JPEG 编码/解码 程序
    ANTLR笔记3 ANTLRWorks
  • 原文地址:https://www.cnblogs.com/SunshineKimi/p/11882290.html
Copyright © 2011-2022 走看看