• pytest参数化


    之前一直用的unittest,最近看pytest也挺火的,就试着玩玩

    今天来说下pytest参数化的使用方法

    举个 a+b很简单的例子来说我们在测试过程中,同一个用例,可能有多组入参,如果每个入参写一个用例就会显得有些繁琐

     1、如何简化上边的用例,可以利用参数化的方法

    @pytest.mark.parametrize

    2、一定要注意:@pytest.mark.parametrize必须写在用例的上方

    3、参数格式说明

    parametrize后边紧跟元组格式参数,元组里边的参数可以是任意形式,比如上图入参是在一个列表中放N个列表,其实列表中放元组也是可以的

     如下所有参数放在一个元组中,也是可以执行成功的

    脚本如下:

    import pytest


    def add(a, b):
    print(a, a+b)
    return a+b


    # test_add(2, 3, 6)
    # test_add(2, 3, 5)
    # test_add(1, 4, 55)
    # @pytest.mark.parametrize('a, b, exp', [
    # [2, 3, 6],
    # [2, 3, 5],
    # [1, 4, 55]
    #
    # ])
    @pytest.mark.parametrize('a, b, exp', (
    (2, 3, 6),
    (2, 3, 5),
    (1, 4, 55))

    )
    def test_add(a, b, exp):
    assert add(a, b) == exp


    if __name__ == '__main__':
    pytest.main(["-s", "-v", "test_add.py"])



    参数用字典也是可以传的,脚本如下:

    import pytest

    def add(a,b):
    return a+b

    # 第一种种列表+元祖形式 此处因为元祖不能更改 较少使用
    date=[
    (1,2,3),
    (2,3,5)
    ]
    @pytest.mark.parametrize('a,b,c',date)
    def test_p(a,b,c):
    assert add(a,b)==c

    # 第二种列表+字典形式 常用

    datejson=[{"a":1,"b":2,"c":3},
    {"a":2,"b":2,"c":4},
    {"a":3,"b":4,"c":7}]

    @pytest.mark.parametrize('ar',datejson)
    def test_X(ar):
    a=ar["a"]
    b=ar["b"]
    c=ar["c"]
    assert add(a,b)==c


    # 补充 测试类时
    @pytest.mark.parametrize('ar',datejson)
    class Testadd:
    def test_add(self,ar):
    a = ar["a"]
    b = ar["b"]
    c = ar["c"]
    assert add(a, b) == c


    if __name__=='__main__':
    pytest.main(['-v','./test_py.py'])

  • 相关阅读:
    如何判断两个数组是否相等?
    正则表达式
    开发板 Linux驱动视频 驱动是什么
    关于模型的评估
    Python画图参数设置
    Python图片的横坐标汉字
    矩阵的点成和叉乘
    svd 奇异值分解
    Python的主成分分析PCA算法
    论文参考文献格式
  • 原文地址:https://www.cnblogs.com/merry-0131/p/14986904.html
Copyright © 2020-2023  润新知