前言

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

parametrizing

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

import pytest@pytest.mark.parametrize("test_input, expected",[("3+5", 8),("5+7", 12),("9/3", 3),("6*9", 42)]
)
def test_eval(test_input, expected):print("______测试用例_______")assert eval(test_input) == expectedif __name__ == '__main__':pytest.main(["-s", "Parametrize_01.py"])

运行结果

============================= test session starts =============================
platform win32 -- Python 3.6.2, pytest-3.7.4, py-1.6.0, pluggy-0.7.1
rootdir: D:\python_auto\s14\pytest_learn, inifile:
collected 4 itemsParametrize_01.py ______测试用例_______
.______测试用例_______
.______测试用例_______
.______测试用例_______
F================================== FAILURES ===================================
______________________________ test_eval[6*9-42] ______________________________test_input = '6*9', expected = 42@pytest.mark.parametrize("test_input, expected",[("3+5", 8),("5+7", 12),("9/3", 3),("6*9", 42)])def test_eval(test_input, expected):print("______测试用例_______")
>       assert eval(test_input) == expected
E       AssertionError: assert 54 == 42
E        +  where 54 = eval('6*9')Parametrize_01.py:18: AssertionError
===================== 1 failed, 3 passed in 0.07 seconds ======================

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

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

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

import pytest@pytest.mark.parametrize("test_input, expected",[("3+5", 8),("5+7", 12),("9/3", 3),pytest.param("6*9", 42,marks=pytest.mark.xfail),]
)
def test_eval(test_input, expected):print("______测试用例_______")assert eval(test_input) == expectedif __name__ == '__main__':pytest.main(["-s", "Parametrize_02.py"])

运行结果:

============================= test session starts =============================
platform win32 -- Python 3.6.2, pytest-3.7.4, py-1.6.0, pluggy-0.7.1
rootdir: D:\python_auto\s14\pytest_learn, inifile:
collected 4 itemsParametrize_02.py ______测试用例_______
.______测试用例_______
.______测试用例_______
.______测试用例_______
x===================== 3 passed, 1 xfailed in 0.10 seconds =====================

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

参数组合

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

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

运行结果

============================= test session starts =============================
platform win32 -- Python 3.6.2, pytest-3.7.4, py-1.6.0, pluggy-0.7.1
rootdir: D:\python_auto\s14\pytest_learn, inifile:
collected 4 itemsParametrize_03.py ______测试用例_______
测试数据组合: x -> 0, y -> 2
.______测试用例_______
测试数据组合: x -> 1, y -> 2
.______测试用例_______
测试数据组合: x -> 0, y -> 3
.______测试用例_______
测试数据组合: x -> 1, y -> 3
.========================== 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

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

转载于:https://www.cnblogs.com/lixy-88428977/p/9672579.html

pytest_参数化parametrize相关推荐

  1. pytest实战--参数化parametrize+前置fixture

    文章目录 参数化 parametrize 适用场景 一个典型的例子 前置fixture+参数化 适用场景 一个典型的例子 示例2 个人疑问? pytest既可以用来做单元测试,也可以用来做自动化接口测 ...

  2. 什么是Pytest及Pytest常用方法

    什么是Pytest? 一.什么是pytest 二.Pytest的特点 三.Pytest以及常用插件安装 四.编写规则 五.Pytest之收集用例及命令行参数 1.用例收集规则 2.命令行参数 六.跳过 ...

  3. print不起作用 pytest_pytest使用 小结

    pytest是一个使构建简单和可扩展测试变得容易的框架. 命名 文件名必须是test_开头 或_test结尾的.py文件 类名必须是Test开头 测试函数以test_开头:_test结尾不可以(如b_ ...

  4. Python单元测试框架《python 自动化框架 pytest》

    Pytest 简介 pytest 是python 的一种单元测试框架,不python 自带的unittest 测试框架类似,但是比 unittest 框架使用起来更简洁,效率更高.根据pytest 的 ...

  5. pytest自动化6:pytest.mark.parametrize装饰器--测试用例参数化

    前言:pytest.mark.parametrize装饰器可以实现测试用例参数化. parametrizing 1.  下面是一个简单是实例,检查一定的输入和期望输出测试功能的典型例子 2.  标记单 ...

  6. Python Pytest装饰器@pytest.mark.parametrize多样参数化(二)

    Pytest中装饰器@pytest.mark.parametrize('参数名',list)可以实现测试用例参数化,类似DDT 1.第一个参数是字符串,多个参数中间用逗号隔开 2.第二个参数是list ...

  7. 第十三:Pytest参数化-@pytest.mark.parametrize装饰器来实现数据驱动测试

    1.unittest单元测试框架使用DDT进行数据驱动测试,那么Pytest框架有没有数据驱动呢? 2.Pytest是使用@pytest.mark.parametrize装饰器来实现数据驱动测试的. ...

  8. parametrize参数化中使用skip标记

    [原文链接]parametrize参数化中使用skip标记 在参数化过程中,也可以使用skip对特定的数据进行标记,比如如下由于某种原因,当前实现的功能尚未满足(1,100)这组数据,因此此时可以使用 ...

  9. 【pytest】(详解)@pytest.mark.parametrize: 参数化测试函数

    目录 1.快速入门 1.1介绍 1.2代码示例 1.3运行结果 1.4结果分析 2.装饰测试类 2.1介绍 2.2示例代码 2.3.运行结果 2.4结果分析 3.全局变量方式进行参数化 3.1介绍 3 ...

最新文章

  1. eeglab中文教程系列(7)-数据叠加平均{2}绘制2D和3D图
  2. 幼儿园计算机教案 妈妈的爱,幼儿园大班教案《妈妈的爱》(通用)
  3. MySQL—增删改查,分组,连表,limit,union,alter,排序,去重
  4. 《训练指南》——6.10
  5. 1.4激活函数-带隐层的神经网络tf实战
  6. 20170102-文件处理
  7. 谷歌 Chrome Dev Tools 浅析 – 成为更高效的 Developer
  8. ccf会议等级划分_Python计算山东新高考选考科目卷面原始成绩为等级成绩
  9. 记一次成功修复U盘的痛苦经历
  10. 餐厅点餐系统设计思路
  11. mysql sql 隐藏信息
  12. 新域名正在备案,静候佳音
  13. 基于UCOSII的RS485通信(STM32F107)
  14. 人机交互如何改变人类生活 | 公开课笔记
  15. Top,vmstat命令排查CPU使用率,负载问题
  16. Flutter中的Provider(八)-多个Provider-MultiProvider
  17. TI-RTOS---TI-RTOS简介
  18. 宜人贷PaaS数据服务平台Genie:技术架构及功能
  19. JAVA简单分布式部署
  20. 简洁商务风公司产品介绍通用PPT模板

热门文章

  1. 2021年全球行为健康软件收入大约1726.1百万美元,预计2028年达到3272.6百万美元,2022至2028期间,年复合增长率CAGR为10.4%
  2. 关于win10系统hosts文件的内容
  3. Lecture 16 Dependency Grammar
  4. 【物联网】17.物联网传感器信号处理 - 信号放大电路
  5. 在MATLAB中使用数学符号,在matlab中怎么输入特殊符号 function在MATLAB中怎么用
  6. Assembly插件打包dubbo服务步骤
  7. 如何迈出创业(网站运营)第一步
  8. 治疗感冒时鼻塞 试试按摩这些穴位
  9. 云计算 3.0 的发展面临哪三大挑战?
  10. 《加勒比海盗》中的一句话...