前言

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

parametrizing

1.这里是一个实现检查一定的输入和期望输出测试功能的典型例子

  1. import pytest
  2.  
  3. @pytest.mark.parametrize(
  4. "test_input, expected",
  5. [
  6. ("3+5", 8),
  7. ("5+7", 12),
  8. ("9/3", 3),
  9. ("6*9", 42)
  10. ]
  11. )
  12. def test_eval(test_input, expected):
  13. print("______测试用例_______")
  14. assert eval(test_input) == expected
  15.  
  16. if __name__ == '__main__':
  17. pytest.main(["-s", "Parametrize_01.py"])

运行结果

  1. ============================= test session starts =============================
  2. platform win32 -- Python 3.6.2, pytest-3.7.4, py-1.6.0, pluggy-0.7.1
  3. rootdir: D:\python_auto\s14\pytest_learn, inifile:
  4. collected 4 items
  5.  
  6. Parametrize_01.py ______测试用例_______
  7. .______测试用例_______
  8. .______测试用例_______
  9. .______测试用例_______
  10. F
  11.  
  12. ================================== FAILURES ===================================
  13. ______________________________ test_eval[6*9-42] ______________________________
  14.  
  15. test_input = '6*9', expected = 42
  16.  
  17. @pytest.mark.parametrize(
  18. "test_input, expected",
  19. [
  20. ("3+5", 8),
  21. ("5+7", 12),
  22. ("9/3", 3),
  23. ("6*9", 42)
  24. ]
  25. )
  26. def test_eval(test_input, expected):
  27. print("______测试用例_______")
  28. > assert eval(test_input) == expected
  29. E AssertionError: assert 54 == 42
  30. E + where 54 = eval('6*9')
  31.  
  32. Parametrize_01.py:18: AssertionError
  33. ===================== 1 failed, 3 passed in 0.07 seconds ======================

在这个例子中设计的,只有一条输入/输出值的简单测试功能。和往常一样

函数的参数,你可以在运行结果看到在输入和输出值

2.它也可以标记单个测试实例在参数化,例如使用内置的mark.xfail

  1. import pytest
  2.  
  3. @pytest.mark.parametrize(
  4. "test_input, expected",
  5. [
  6. ("3+5", 8),
  7. ("5+7", 12),
  8. ("9/3", 3),
  9. pytest.param("6*9", 42,
  10. marks=pytest.mark.xfail),
  11. ]
  12. )
  13. def test_eval(test_input, expected):
  14. print("______测试用例_______")
  15. assert eval(test_input) == expected
  16.  
  17. if __name__ == '__main__':
  18. pytest.main(["-s", "Parametrize_02.py"])

运行结果:

  1. ============================= test session starts =============================
  2. platform win32 -- Python 3.6.2, pytest-3.7.4, py-1.6.0, pluggy-0.7.1
  3. rootdir: D:\python_auto\s14\pytest_learn, inifile:
  4. collected 4 items
  5.  
  6. Parametrize_02.py ______测试用例_______
  7. .______测试用例_______
  8. .______测试用例_______
  9. .______测试用例_______
  10. x
  11.  
  12. ===================== 3 passed, 1 xfailed in 0.10 seconds =====================

标记为失败的用例就不运行了,直接跳过显示xfailed

参数组合

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

  1. import pytest
  2.  
  3. @pytest.mark.parametrize("x", [0,1])
  4. @pytest.mark.parametrize("y", [2,3])
  5. def test_eval(x, y):
  6. print("______测试用例_______")
  7. print("测试数据组合: x -> %s, y -> %s"% (x, y))
  8.  
  9. if __name__ == '__main__':
  10. pytest.main(["-s", "Parametrize_03.py"])

运行结果

  1. ============================= test session starts =============================
  2. platform win32 -- Python 3.6.2, pytest-3.7.4, py-1.6.0, pluggy-0.7.1
  3. rootdir: D:\python_auto\s14\pytest_learn, inifile:
  4. collected 4 items
  5.  
  6. Parametrize_03.py ______测试用例_______
  7. 测试数据组合: x -> 0, y -> 2
  8. .______测试用例_______
  9. 测试数据组合: x -> 1, y -> 2
  10. .______测试用例_______
  11. 测试数据组合: x -> 0, y -> 3
  12. .______测试用例_______
  13. 测试数据组合: x -> 1, y -> 3
  14. .
  15.  
  16. ========================== 4 passed in 0.05 seconds ===========================

这将运行测试,参数设置为x=0/y=2,x=1/y=2,x=0/y=3,x=1/y=3组合参数。

作者:含笑半步颠√

博客链接:https://www.cnblogs.com/lixy-88428977

声明:本文为博主学习感悟总结,水平有限,如果不当,欢迎指正。如果您认为还不错,欢迎转载。转载与引用请注明作者及出处。

pytest_参数化parametrize的更多相关文章

  1. pytest 8 参数化parametrize

    pytest.mark.parametrize装饰器可以实现用例参数化 1.以下是一个实现检查一定的输入和期望输出测试功能的典型例子 import pytest @pytest.mark.parame ...

  2. 预期结果 参数化parametrize

    1.pytest.mark.parametrize装饰器可以实现测试用例参数化. 2.实例: import pytest @pytest.mark.parametrize("req,expe ...

  3. pytest_参数化3

    import pytesttest_user_data=[ {'user':'linda','password':'8888'}, {'user':'servenruby','password':'1 ...

  4. pytest参数化 parametrize

    pytest.mark.parametrize装饰器可以实现测试用例参数化 parametrizing 1.这里是一个实现检查一定的输入和期望输出测试功能的典型例子 # content of test ...

  5. Pytest 系列(28)- 参数化 parametrize + @allure.title() 动态生成标题

    如果你还想从头学起Pytest,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1690628.html 前言 参数化 @pytest.ma ...

  6. Pytest_参数化(10)

    pytest参数化有两种方式: mark的parametrize标记:@pytest.mark.parametrize(变量名,变量值),其中变量值类型为列表.元组或其它可迭代对象. fixture的 ...

  7. pytest_参数化之3*3

    import pytesttest_user_data1=[{'user':'linda','password':'888888'}, {'user':'servenruby','password': ...

  8. pytest文档8-参数化(parametrize)结合allure.title()生成不同标题报告

    参数化parametrize 先看一个简单的pytest参数化案例演示test_a.py # test_a.py import pytest import allure def login(usern ...

  9. 比培训机构还详细的 Python 学习路线,你信吗 0^0

    前言 这其实是将自己写的文章进行一个总结分类,并不代表最佳学习路线 会不断更新这篇文章...没链接的文章正在编写ing...会不会哪天我的这个目录就出现在培训机构的目录上了... 目前实战比较少(要是 ...

随机推荐

  1. x64汇编第二讲,复习x86汇编指令格式,学习x64指令格式

    目录 x64汇编第二讲,复习x86汇编指令格式,学习x64指令格式 一丶x86指令复习. 1.1什么是x86指令. 1.2 x86与x64下的通用寄存器 1.3 OpCode 1.4 7种寻址方式 二 ...

  2. AMPPZ2014 The Captain

    传送门 BZOJdown Solution 比较妙,考虑按照给出的式子,只有\(x\)相邻或者\(y\)相邻的才会走,不然一定会走到相邻的再走\(x\)或\(y\),所以直接排序两边然后最短路即可. ...

  3. PSQLException: An I/O error occurred while sending to the backend.

    postgresql批量新增数据时,批量插入的数据量太大了,造成了IO异常 只能把这么多数据先进行分割,再批量插入,但是感觉这种方式不是最优解,先暂时顶着,具体List分割方式如下: package ...

  4. NSGA-II算法学习

    什么是支配: 支配就是统治,在各方面都优于其余个体 如个体i支配个体j,就说明个体i在所有目标函数的表现上都不差于个体j,并且至少在一个目标上优于个体j: 什么是非支配: 非支配就是个体在种群中是最优 ...

  5. Redis内存数据库

    remote dictionary server 远程字典服务器 Redis默认支持16个数据库,不同的应用应该使用不同的Redis实例存储数据.   支持数据类型:字符串,哈希散列,列表,集合,有序 ...

  6. 如何保证MQ的顺序性?比如Kafka

    三.如何保证消息的顺序性 1. rabbitmq 拆分多个queue,每个queue一个consumer,就是多一些queue而已,确实是麻烦点:或者就一个queue但是对应一个consumer,然后 ...

  7. mybatis在sql中的CDATA区

    示例 <if test="startTime != null"> <![CDATA[ AND rra.create_time >= #{startTime} ...

  8. Gaze Estimation学习笔记(2)-It's Written All Over Your Face Full-Face Appearance-Based Gaze Estimation

    目录 前言 将完整脸部图像作为输入的空间权重CNN方法 将full-face image作为输入的原因 加入空间权重的CNN方法 基础CNN结构 空间权重机制 实验及分析 头部姿态.面部表现视线方向的 ...

  9. Spark2.x(六十三):(Spark2.4)Driver如何把Task(闭包等)分配给Executor

    在Spark中一个appliation可能包含多个job,每个job都是由SparkContext#runJob(...)触发的,一个Job下包含1个或多个Stage,Job的最后一个stage为Re ...

  10. 《自然语言理解(Natural Language Understanding)》(2016-03-17)阅读笔记

    原文链接:https://yq.aliyun.com/articles/8301 作者:李永彬 发布时间:2016-03-17 16:37:47 自然语言理解(Natural Language Und ...