Pytest单元测试框架之parametrize参数化
1、参数化的本质:相同的步骤,但测试数据不同,比如登录的场景
import math
import pytest
# 方式一:分离出List
def list_Test():
list = [
[2, 2, 4],
[2, 3, 8],
[1, 9, 1],
[0, 9, 0],
]
return list
@pytest.mark.parametrize('a,b,expect',list_Test())
def test_add_one(a,b,expect):
# 断言 -- 某数的平方=expect对象
assert math.pow(a,b) == expect
# 方式二:分离出tuple
def tuple_Test():
tuple = [
(2, 2, 4),
(2, 3, 8),
(1, 9, 1),
(0, 9, 0),
]
return tuple
@pytest.mark.parametrize('a1,b1,expect1',tuple_Test())
def test_add_two(a1,b1,expect1):
# 断言 -- 某数的平方=expect对象
assert math.pow(a1,b1) == expect1
# 方式三:分离出dict
def dict_Test():
dict = [
{'a': 2, 'b': 2, 'expect': 4},
{'a': 2, 'b': 3, 'expect': 8},
{'a': 2, 'b': 4, 'expect': 16},
{'a': 1, 'b': 9, 'expect': 1},
]
return dict
@pytest.mark.parametrize('datas',dict_Test())
def test_add_three(datas):
# 断言 -- 某数的平方=expect对象
assert math.pow(datas['a'],datas['b']) == datas['expect']
# 方式四: 使用pytest.param方法进行分离
def param_Test():
param = [
pytest.param(1, 1, 1,id='one'),
pytest.param(2, 2, 4,id='two'),
pytest.param(3, 3, 27,id='three')
]
return param
# ids参数默认为None,用于定义测试用例的名称
@pytest.mark.parametrize('a,b,expect',param_Test())
def test_add_four(a,b,expect):
# 断言 -- 某数的平方=expect对象
assert math.pow(a,b) == expect
if __name__ == '__main__':
pytest.main(['-v','-s','test_mark.param.py'])
运行代码结果如下:

2、固件request
import pytest
import math
def datas():
dict_param = [
{'a': 2, 'b': 2, 'expect': 4},
{'a': 2, 'b': 3, 'expect': 8},
{'a': 2, 'b': 4, 'expect': 16},
]
return dict_param
@pytest.fixture(params=datas())
def getParams(request):
return request.param
def test_math_pow(getParams):
# 断言 -- 某数的平方=expect对象
assert math.pow(getParams['a'],getParams['b']) == getParams['expect']
if __name__ == '__main__':
pytest.main(['-v','-s','test_mark.param.py'])
代码运行结果如下:

Pytest单元测试框架之parametrize参数化的更多相关文章
- Pytest单元测试框架-测试用例运行规则
1.Pytest测试用例运行规则 在pytest单元测试框架下面执行用例,需要满足以下几个特点: 1. 文件名以test_*.py开头或者*_test.py 2. 测试类.测试函数以test开头 3. ...
- Pytest单元测试框架-Pytest环境安装
unittest是python自带的单元测试框架,它封装好了一些校验返回的结果方法和一些用例执行前的初始化操作,使得单元测试易于开展,因为它的易用性,很多同学也拿它来做功能测试和接口测试,只需简单开发 ...
- Pytest单元测试框架:插件-allure-pytest环境搭建并在本地生成一个测试报告
之前写了allure-pytest的官方文档啃的内容,有些交流的朋友,实践起来没什么头绪,所以就有了这篇文章,也给自己填个坑 第一步:搭建Allure.JDK环境 1. 搭建JDK环境 不装jdk你会 ...
- Pytest单元测试框架之简单操作示例
前言: Pytest是第三方单元格测试框架,更加简单,灵活,而且提供了更多丰富的扩展: Pytest与UnitTest框架的区别 UnitTest测试用例执行顺序是依照ascii码执行,而Pytest ...
- Pytest单元测试框架-学习
pytest: Python的一个单元测试框架,基于UnitTest二次开发,语法上更加简洁,可以用来做Python开发项目的单元测试,UI自动化.接口自动化测试等,有很多的插件访问Pytest插件汇 ...
- Pytest单元测试框架之FixTure基本使用
前言: 在单元测试框架中,主要分为:测试固件,测试用例,测试套件,测试执行及测试报告: 测试固件不难理解,也就是我们在执行测试用例前需要做的动作和测试执行后的需要做的事情: 比如在UI自动化测试中,我 ...
- Pytest 单元测试框架
1.pytest 是 python 的第三方单元测试框架,比自带 unittest 更简洁和高效 2.安装 pytest pip install pytest 3.验证 pytest 是否安装成功 p ...
- Pytest单元测试框架——Pytest+Allure+Jenkins的应用
一.简介 pytest+allure+jenkins进行接口测试.生成测试报告.结合jenkins进行集成. pytest是python的一种单元测试框架,与python自带的unittest测试框架 ...
- pytest单元测试框架
一.安装方式 1.安装命令:pip install pytest 2.html安装插件:pip install pytest -html 二.pytest执行指定测试用例 1.思想:通过对测试用例进行 ...
随机推荐
- 2、java数据结构和算法:单链表: 反转,逆序打印, 合并二个有序链表,获取倒数第n个节点, 链表的有序插入
什么也不说, 直接上代码: 功能点有: 1, 获取尾结点 2, 添加(添加节点到链表的最后面) 3, 添加(根据节点的no(排名)的大小, 有序添加) 4, 单向链表的 遍历 5, 链表的长度 6, ...
- Linux学习笔记:linux命令之目录处理命令
目录处理命令 ls 命令名称:ls 英文原意:list 执行权限:所有用户 功能:显示目录文件 语法:ls 选项[-ald] [文件或目录] -a:显示所有文件,包括隐藏文件 -l:详细信息显示 -d ...
- 狂神说redis笔记(二)
四.三种特殊数据类型 Geospatial(地理位置) 使用经纬度定位地理坐标并用一个有序集合zset保存,所以zset命令也可以使用 geoadd key longitud(经度) latitude ...
- P2782 友好城市(最长不下降子序列)
题目描述 有一条横贯东西的大河,河有笔直的南北两岸,岸上各有位置各不相同的$N$个城市.北岸的每个城市有且仅有一个友好城市在南岸,而且不同城市的友好城市不相同.每对友好城市都向政府申请在河上开辟一条直 ...
- linux远程和软件包的管理
远程管理 ssh 用户名@对方IP地址 -X 在本地可以运行对方的图形程序 端口 22 [root@room9pc01 ~]# ssh root@172.25.0.11 [root@serve ...
- Samba 服务基础
配置SMB共享,跨平台的共享,Windows与Linux的共享 • Samba 软件项目 用途:为客户机提供共享使用的文件夹 协议:SMB(TCP 139).CIFS(TCP 445) • 所需软件包 ...
- 微软发布了Visual Studio 2022 Preview 1 以及.NET 6 Preview 5
Microsoft 今天宣布了Visual Studio 2022 的第一个预览版,并且同时也发布了.NET 6 Preview 5. https://devblogs.microsoft.com/v ...
- UF_VIEW 视图操作
Open C uc6400uc6401uc6402uc6403uc6404uc6405uc6406uc6408uc6409uc6430uc6431uc6432uc6433 获得视图3×3矩阵uc ...
- 如何在CentOS 7上搭建LAMP环境(使用YUM或编译)
什么是LAMP? LAMP是Linux,Apache,MySQL和PHP的缩写. 它是一堆应用程序的堆栈,它们在Web服务器上一起工作以托管网站. 话虽如此,每个程序都有不同的目的: 在LAMP中, ...
- SCP,SSH应用