Python Pytest装饰器@pytest.mark.parametrize详解

 更新时间:2021年08月23日 11:19:55   作者:王大力测试进阶之路  
本文主要介绍了Python Pytest装饰器@pytest.mark.parametrize详解,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

Pytest中装饰器@pytest.mark.parametrize('参数名',list)可以实现测试用例参数化,类似DDT
如:@pytest.mark.parametrize('请求方式,接口地址,传参,预期结果',[('get','www.baidu.com','{"page":1}','{"code":0,"msg":"成功"})',('post','www.baidu.com','{"page":2}','{"code":0,"msg":"成功"}')])

1、第一个参数是字符串,多个参数中间用逗号隔开

2、第二个参数是list,多组数据用元祖类型;传三个或更多参数也是这样传。list的每个元素都是一个元组,元组里的每个元素和按参数顺序一一对应

3、传一个参数 @pytest.mark.parametrize('参数名',list) 进行参数化

4、传两个参数@pytest.mark.parametrize('参数名1,参数名2',[(参数1_data[0], 参数2_data[0]),(参数1_data[1], 参数2_data[1])]) 进行参数化

import pytest
#单参数单值
@pytest.mark.parametrize("user",["18221124104"])
def test(user):
    print(user)
    assert user=="18221124104"
 
"C:\Program Files\Python35\python.exe" C:/Users/wangli/PycharmProjects/Test/test/test03.py
============================= test session starts =============================
platform win32 -- Python 3.5.2, pytest-5.1.2, py-1.8.0, pluggy-0.12.0
rootdir: C:\Users\wangli\PycharmProjects\Test\test
collected 1 item
 
test03.py 18221124104
.
 
============================== 1 passed in 0.15s ==============================
 
Process finished with exit code 0
 
#单参数多值
@pytest.mark.parametrize("user",["18221124104","18200000000","18200000001"])
def test(user):
    print(user)
    assert user=="18221124104"
 
 
"C:\Program Files\Python35\python.exe" C:/Users/wangli/PycharmProjects/Test/test/test03.py
============================= test session starts =============================
platform win32 -- Python 3.5.2, pytest-5.1.2, py-1.8.0, pluggy-0.12.0
rootdir: C:\Users\wangli\PycharmProjects\Test\test
collected 3 items
 
test03.py 18221124104
.18200000000
F18200000001
F
 
================================== FAILURES ===================================
______________________________ test[18200000000] ______________________________
 
user = '18200000000'
 
    @pytest.mark.parametrize("user",["18221124104","18200000000","18200000001"])
    def test(user):
        print(user)
>       assert user=="18221124104"
E       AssertionError
 
test03.py:74: AssertionError
______________________________ test[18200000001] ______________________________
 
user = '18200000001'
 
    @pytest.mark.parametrize("user",["18221124104","18200000000","18200000001"])
    def test(user):
        print(user)
>       assert user=="18221124104"
E       AssertionError
 
test03.py:74: AssertionError
========================= 2 failed, 1 passed in 0.21s =========================
 
Process finished with exit code 0

#多参数多值
@pytest.mark.parametrize("user,pwd",[("18221124104",111111),("18200000000",111111)])
def test(user,pwd):
    print(user,pwd)
  
"C:\Program Files\Python35\python.exe" C:/Users/wangli/PycharmProjects/Test/test/test03.py
============================= test session starts =============================
platform win32 -- Python 3.5.2, pytest-5.1.2, py-1.8.0, pluggy-0.12.0
rootdir: C:\Users\wangli\PycharmProjects\Test\test
collected 2 items
 
test03.py 18221124104 111111
.18200000000 111111
.
 
============================== 2 passed in 0.03s ==============================
 
Process finished with exit code 0
 
# 使用内置的mark.xfail标记为失败的用例就不运行了,直接跳过显示xfailed
@pytest.mark.parametrize("user,pwd",[("18221124104",111111),pytest.param("18200000000",111111,marks=pytest.mark.xfail)])
def test(user,pwd):
    print(user,pwd)
    assert user == "18221124104"
    assert pwd== 111111
  
"C:\Program Files\Python35\python.exe" C:/Users/wangli/PycharmProjects/Test/test/test03.py
============================= test session starts =============================
platform win32 -- Python 3.5.2, pytest-5.1.2, py-1.8.0, pluggy-0.12.0
rootdir: C:\Users\wangli\PycharmProjects\Test\test
collected 2 items
 
test03.py 18221124104 111111
.18200000000 111111
x
 
======================== 1 passed, 1 xfailed in 0.14s =========================
 
Process finished with exit code 0
 
#若要获得多个参数化参数的所有组合,可以堆叠参数化装饰器
@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","test03.py"])
 
 
"C:\Program Files\Python35\python.exe" C:/Users/wangli/PycharmProjects/Test/test/test03.py
============================= test session starts =============================
platform win32 -- Python 3.5.2, pytest-5.1.2, py-1.8.0, pluggy-0.12.0
rootdir: C:\Users\wangli\PycharmProjects\Test\test
collected 4 items
 
test03.py 测试数据组合:x->0, y->2
.测试数据组合:x->1, y->2
.测试数据组合:x->0, y->3
.测试数据组合:x->1, y->3
.
 
============================== 4 passed in 0.03s ==============================
 
Process finished with exit code 0

到此这篇关于Python Pytest装饰器@pytest.mark.parametrize详解的文章就介绍到这了,更多相关pytest.mark.parametrize内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 编写Python脚本来获取Google搜索结果的示例

    编写Python脚本来获取Google搜索结果的示例

    这篇文章主要介绍了编写Python脚本来获取Google搜索结果的示例,也是利用Python编写爬虫的一个简单实现,需要的朋友可以参考下
    2015-05-05
  • 利用Python构建Flutter应用的教程详解

    利用Python构建Flutter应用的教程详解

    Flutter在软件研发领域是非常流行的,今天就让我们深入了解一下,用 Python构建flutter应用程序的世界,感兴趣的小伙伴可以跟随小编一起了解一下
    2022-12-12
  • Python一键生成核酸检测日历的操作代码

    Python一键生成核酸检测日历的操作代码

    这篇文章主要介绍了Python一键生成核酸检测日历,本文以深圳为例,结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-09-09
  • Python中合并列表的5种方法代码示例

    Python中合并列表的5种方法代码示例

    在python列表操作中除了排序、删除、添加、去重外,合并也是经常需求的操作,下面这篇文章主要给大家介绍了关于Python中合并列表的5种方法,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-02-02
  • python实现点对点聊天程序

    python实现点对点聊天程序

    这篇文章主要为大家详细介绍了python实现点对点聊天程序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • 基于Python编写一个爆炸信息窗口脚本

    基于Python编写一个爆炸信息窗口脚本

    这篇文章主要为大家详细介绍了如何利用Python语言编写一个爆炸信息窗口脚本,文中的示例代码讲解详细,感兴趣的小伙伴可以尝试一下
    2022-11-11
  • python统计函数被调用次数的实现

    python统计函数被调用次数的实现

    本文主要介绍了python如何统计函数被调用次数,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • Window环境下Scrapy开发环境搭建

    Window环境下Scrapy开发环境搭建

    这篇文章主要介绍了Window环境下Scrapy开发环境搭建,需要的朋友可以参考下
    2018-11-11
  • pandas DataFrame 数据选取,修改,切片的实现

    pandas DataFrame 数据选取,修改,切片的实现

    这篇文章主要介绍了pandas DataFrame 数据选取,修改,切片的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • 详解用 python-docx 创建浮动图片

    详解用 python-docx 创建浮动图片

    这篇文章主要介绍了详解用 python-docx 创建浮动图片,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01

最新评论