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

在Pytest的测试框架中,参数化也会使⽤到pytest内置的固件request,通过request.param来获取参数,对上面的案例代码进行修改,fixture参数列表中request也是内建fixture
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参数化的更多相关文章

  1. Pytest单元测试框架-测试用例运行规则

    1.Pytest测试用例运行规则 在pytest单元测试框架下面执行用例,需要满足以下几个特点: 1. 文件名以test_*.py开头或者*_test.py 2. 测试类.测试函数以test开头 3. ...

  2. Pytest单元测试框架-Pytest环境安装

    unittest是python自带的单元测试框架,它封装好了一些校验返回的结果方法和一些用例执行前的初始化操作,使得单元测试易于开展,因为它的易用性,很多同学也拿它来做功能测试和接口测试,只需简单开发 ...

  3. Pytest单元测试框架:插件-allure-pytest环境搭建并在本地生成一个测试报告

    之前写了allure-pytest的官方文档啃的内容,有些交流的朋友,实践起来没什么头绪,所以就有了这篇文章,也给自己填个坑 第一步:搭建Allure.JDK环境 1. 搭建JDK环境 不装jdk你会 ...

  4. Pytest单元测试框架之简单操作示例

    前言: Pytest是第三方单元格测试框架,更加简单,灵活,而且提供了更多丰富的扩展: Pytest与UnitTest框架的区别 UnitTest测试用例执行顺序是依照ascii码执行,而Pytest ...

  5. Pytest单元测试框架-学习

    pytest: Python的一个单元测试框架,基于UnitTest二次开发,语法上更加简洁,可以用来做Python开发项目的单元测试,UI自动化.接口自动化测试等,有很多的插件访问Pytest插件汇 ...

  6. Pytest单元测试框架之FixTure基本使用

    前言: 在单元测试框架中,主要分为:测试固件,测试用例,测试套件,测试执行及测试报告: 测试固件不难理解,也就是我们在执行测试用例前需要做的动作和测试执行后的需要做的事情: 比如在UI自动化测试中,我 ...

  7. Pytest 单元测试框架

    1.pytest 是 python 的第三方单元测试框架,比自带 unittest 更简洁和高效 2.安装 pytest pip install pytest 3.验证 pytest 是否安装成功 p ...

  8. Pytest单元测试框架——Pytest+Allure+Jenkins的应用

    一.简介 pytest+allure+jenkins进行接口测试.生成测试报告.结合jenkins进行集成. pytest是python的一种单元测试框架,与python自带的unittest测试框架 ...

  9. pytest单元测试框架

    一.安装方式 1.安装命令:pip install pytest 2.html安装插件:pip install pytest -html 二.pytest执行指定测试用例 1.思想:通过对测试用例进行 ...

随机推荐

  1. springboot实现自定义拦截器

    为了更容易理解,我们通过一个代码例子来演示. 例子: 我们现在要访问http://localhost:8080/main.html页面,这个页面需要登录之后才能够浏览,没登录不能浏览. 那么现在问题来 ...

  2. Java抽象类、继承及多态和适配器的实现

    Java继承 方法重写是Java语言多态的特性,必须满足以下条件 在子类中,方法名称与父类方法名称完全相同 方法的参数个数和类型完全相同,返回类型完全相同 方法的访问修饰符访问级别不低于父类同名方法的 ...

  3. Jenkins 安装使用笔记

    系统要求 最低推荐配置: 256MB可用内存 1GB可用磁盘空间(作为一个容器docker运行jenkins的话推荐10GB) 为小团队推荐的硬件配置: 1GB+可用内存 50 GB+ 可用磁盘空间 ...

  4. WPF 后台代码做 TranslateTransform 的动画

    本文告诉大家,在后台代码,对 TranslateTransform 做动画的方法 今天小伙伴问我一个问题,说为什么相同的代码,如果设置到按钮上,是可以让按钮的某个属性变更,但是如果设置给 Transl ...

  5. 【NX二次开发】Block UI 双精度表

    属性说明 常规         类型 描述     BlockID     String 控件ID     Enable     Logical 是否可操作     Group     Logical ...

  6. kerberos安装配置

    目录 前言 服务端安装 组件安装 配置krb5.conf 配置kdc.conf 配置kadm5.acl 创建kdc数据库 在server端创建一个管理员账号,方便远程登录管理kerberos 正式启动 ...

  7. Python3中列表、字典、元组、集合的看法

    文首,我先强调一下我是一个弱鸡码农,这个随笔是在我学习完Python3中的元组.字典.列表,集合这四种常见数据的数据类型的一些感想,如果有什么不对的地方欢迎大家予以指正.谢谢大家啦 回归正题:这篇随笔 ...

  8. 番外篇:使用nssm工具将ES、Kibana、Logstash或者其他.bat文件部署为Windows后台服务的方法

    使用NSSM工具安装bat文件为Windows服务 nssm是一个可以把bat批处理文件部署为Windows服务的小工具.例如很多.net项目可能还是在Windows服务器上面跑的,但是很多组件只提供 ...

  9. 与KubernetesAPI服务器交互

    在介绍过的Downward API提供了一种简单的方式,将pod和容器的元数据传递给在它们内部运行的进程.但这种方式其实仅仅可以暴露一个pod自身的元数据,而且只可以暴露部分元数据.某些情况下,应用需 ...

  10. sed 大括号 sed {} 的作用详解

    今天看别人写的脚本的时候,看到了sed  -r   {}   我看网上对于这个的记录比较少,所以就写了这篇随笔. 先看一下效果 cat  test.txt image: qqq/www/eee:TAG ...