• python + unittest + request + parameterized 参数化遇到中文名称testcase不显示的问题


    最近使用python+unittest+request+parameterized做接口测试,然后在利用parameterized做参数化时,发现测试用例的中文名称,感觉很奇怪,于是跟踪了parameterized的源码。

    花了2小时之久,终于找到,是parameterized.expand函数中,使用了name_func对测试用例的名称进行定义。然后继续追踪发现

    在我们不传入name_func的值时,系统会使用默认的函数去赋值

            name_func = name_func or default_name_func
    

     然后跟踪到default_name_func查看,发现调用了to_safe_name方法对字符串进行格式化

    def default_name_func(func, num, p):
        base_name = func.__name__
        name_suffix = "_%s" %(num, )
        if len(p.args) > 0 and isinstance(p.args[0], string_types):
            name_suffix += "_" + parameterized.to_safe_name(p.args[0])
        return base_name + name_suffix
    

     进一步查看to_safe_name,发现to_safe_name中,格式化的pattern,过滤了中文

        def to_safe_name(cls, s):
            return str(re.sub("[^a-zA-Z0-9_]+", "_", s))
    

     所以问题找到了,是因为t_safe_name过滤了中文。

    那么怎么解决呢,我们一般最好不要修改源代码吧,所以我们可以按照default_name_func自定义一个函数,然后调用自定义的to_safe_name方法

    def to_safe_name(s):
        # 对所有非英文,数字,下划线和中文的字符都替换为"_"
        return str(re.sub("[^a-zA-Z0-9_u4e00-u9fa5]+", "_", s))
    
    def test_name_func(func, num, p):
        base_name = func.__name__
        name_suffix = "_%s" %(num, )
        if len(p.args) > 0 and isinstance(p.args[0], string_types):
            name_suffix += "_" + to_safe_name(p.args[0])
        return base_name + name_suffix

     然后parameterized.expand的参数中写上自定义的方法名:test_name_func

    class Test(unittest.TestCase):
    
    ....
        @parameterized.expand(iterator_data, test_name_func)
        def test01_xxx(self):
            ....
    

     注意:以上代码只是为了演示思想,没有经过实际验证。 

    正则表达式来源:https://blog.csdn.net/weixin_42614447/article/details/89876335

  • 相关阅读:
    Oracle 分析函数(Analytic Functions) 说明
    Build Your Own Oracle RAC 10g Release 2 Cluster on Linux and FireWire
    Build Your Own Oracle RAC 10g Release 2 Cluster on Linux and FireWire
    ORACLE SEQUENCE 介绍
    RAC Ocfs2文件系统常见问题解决方法
    linux 下修改日期和时间
    寒假刷题之7——波纹
    iOS 游戏 Oh my fish! 切割痕迹实现
    ACM常识
    寒假刷题之6——迷宫
  • 原文地址:https://www.cnblogs.com/stanmao/p/11507264.html
Copyright © 2020-2023  润新知