zoukankan      html  css  js  c++  java
  • 预期结果 参数化parametrize

    1、pytest.mark.parametrize装饰器可以实现测试用例参数化。

    语法:
    1). @pytest.mark.parametrize("参数名",["01_值1","02_值2"])
    2). @pytest.mark.parametrize("参1,参2",[("01_参1的值","01_参2的值"),("02_参1的值","02_参2的值")])
    注意:
    1. 参数名:
    1). 多个参数名时,参数与参数之间使用逗号分隔,但是注意所有的参数必须为一个字符串!
    2. 参数值:
    1). 单个参数名的值,格式必须为列表,如:["admin"," admin ","admin123"]
    2). 多个参数值:格式为列表,列表内嵌套元祖,如:[("第一轮参1值","第一轮参2值"),("第二轮参1值","第二轮参2值")]
    3. 调用的参数名必须和设置的参数化引用名称一样。

    2、实例:

    import pytest
    
    @pytest.mark.parametrize("req,expect",
                             [("3+5",8),
                              ("1+1",2),
                               ("8-1",7)
                             ])
    def test11(req,expect):
        assert eval(req)==expect
    
    if __name__ == '__main__':
        pytest.main(["-s","text_01.py"])

    运行结果:

    参数组合:1.若要获得多个参数化参数的所有组合,可以堆叠参数化装饰器

    import pytest
    @pytest.mark.parametrize("x", [0, 1])
    @pytest.mark.parametrize("y", [2, 3])
    def test_foo(x, y):
        print("测试数据组合:x->%s, y->%s" % (x, y))
    
    if __name__ == "__main__":
        pytest.main(["-s", "test_canshu1.py"])

    运行结果:

    3、有时候功能变动,用例就会失败,这种预料之类会失败的用例可以标记为忽视,暂不运行。使用内置的mark.xfai

    import pytest
    
    @pytest.mark.parametrize("req,expect",
                             [("3+5",8),
                              ("1+1",2),
                              pytest.param("6 * 9", 42, marks=pytest.mark.xfail)#用例失败,标记忽视
                             ])
    def test11(req,expect):
        assert eval(req)==expect
    
    if __name__ == '__main__':
        pytest.main(["-s","text_01.py"])

    运行结果:

  • 相关阅读:
    html自定义加载动画
    数据结构与算法:贪心算法简介
    WEB 前端常用字体和色值你知道多少?
    为什么浮点精度运算会有问题
    Java 字符串格式示例
    使用 Java 和 Maven (JBake) 生成静态网站
    硅谷钢铁侠
    Flink中的5种窗口使用场景
    prometheus-operator监控k8s资源
    fluentd收集k8s集群pod日志
  • 原文地址:https://www.cnblogs.com/guo2733/p/10530578.html
Copyright © 2011-2022 走看看