美文网首页
pytest-paramtrize参数化用例

pytest-paramtrize参数化用例

作者: Rainbow想喝奶茶 | 来源:发表于2021-08-18 13:44 被阅读0次

    pytest-贼基础的基础记录中,曾在最后简单的描述了如何对一个测试用例进行传参。看了几篇教程后发现这个还是有些细节及用法需要进一步的了解,今天又学习了下,开始更新。

    传一个参数

    import pytest
    @pytest.mark.parametrize("name",["a","b"])
    def test_parametrize(name):
        assert len(name)==1
    

    如上述代码,@pytest.mark.parametrize在定义参数时,首先用引号标明参数名称,而后用list定义参数值。在函数引用时,括号内需要标明引用的参数名称。运行结果如下图所示,可看到,共有两个用例执行。

    一个参数运行结果

    传多个参数

    import pytest
    @pytest.mark.parametrize("name,age",[("a",1),("b",2)])
    def test_parametrize(name,age):
        assert len(name)==1
        assert age!=3
    

    当有多个参数时,引号内部的多个参数需要用逗号隔开;而对于参数值,则是在list中以tuple的形式列举。


    多个参数运行结果

    参数值为字典

    data=(
        {'name':"a",
         'age':1},
        {'name':"b",
         'age':2}
    )
    @pytest.mark.parametrize('dic', data)
    def test_parametrize_1(dic):
        assert len(dic["name"])==1
        assert dic["age"]!=3
    

    当参数值为字典数据时,定义参数名字可以直接定义一个整体,应用的时候取字典内对应的参数。


    字典参数运行结果

    ids标识

    @pytest.mark.parametrize可以通过传递ids参数来标识每一个测试用例,它是一个字符串列表。

    import pytest
    @pytest.mark.parametrize("name,age",[("a",1),("b",2)],ids=["first","second"])
    def test_parametrize(name,age):
        assert len(name)==1
        assert age!=3
    

    ids的数量与用例数量保持一致,运行后会在结果中显示。

    带有ids标识
    自我记录,有错误欢迎指正~

    相关文章

      网友评论

          本文标题:pytest-paramtrize参数化用例

          本文链接:https://www.haomeiwen.com/subject/zfrgbltx.html