Pytest框架参数化

一、pytest参数化方式

  • @pytest.fixture(),此参数化装饰的函数可以作为参数传入其他函数

  • @pytest.mark.parametrize() ,此参数化方法支持传入单个参数或多个参数。

本文主要介绍第二种参数化方式

二、参数化详解

  • 单个参数

@pytest.mark.parametrize(“参数名称”,lists or tuple or set) ,传入单个参数。
参数名称仅作为参数名称,便于记忆,可随意起。
参数不管是lists或是tuple类型都可以运行成功,另外集合类型set(),顺便试了一下也是成功的不过没有特殊研究过。

import pytest
is_day = [1,2,3,4,5,6,]
is_years = (11,34,76,23,54,)
is_age = {11,23,45,67,88,}

@pytest.mark.parametrize('day,',is_day)
def test_01(day):
    print(day)
    return day

代码运行结果:
list 或 tuple运行都是pass状态

  • 多个参数

@pytest.mark.parametrize(“参数名称1,参数名称2,…”,[(2+1),(),…]) ,传入单个参数。
传入多个参数时,参数类型为list嵌套tuple [(),(),(),...]形式。注意:参数名称的个数要与元组中的参数个数相对应。

import pytest

@pytest.mark.parametrize('a,b',[('1+2',3),('3+4',7),('2+2',4)])
def test_02(a,b):
    assert eval(a)==b

代码运行结果:
多个参数

  • 单个参数传入函数,直接上代码。
  • 其中list可以是读取某txt、excel的函数,这里为了简单这样写。可以看出参数位置传入的是list()函数。
import pytest

def list():
    return [1,2,3,4,5,6,7]

@pytest.mark.parametrize('list',list())
def test_02(list):
    print(list)
    assert list is not None

代码运行结果:
在这里插入图片描述

  • 多个参数传入函数
  • 多个参数是需要使用嵌套方式,所以需要把数据处理成[(),(),(),...]类型形式。首先不管是读取本地txt、excel文件还是直接从mysql、redis获取的数据都需要对数据进行重新处理,处理成@pytest.mark.parametrize()可以接收的类型。

我的处理方式:

def list():
    return [1,2,3,4,5,6,7]

def list1():
    return [4,5,67,89,98,33,45]

def switch(list1,list2):
    lists = []
    for day ,year in zip(list1,list2):
        lists.append((day,) + (year,))
    print(lists)
    return lists

switch(list(),list1())

代码运行结果:
在这里插入图片描述

完整代码:

import pytest

def list():
    return [1,2,3,4,5,6,7]

def list1():
    return [4,5,67,89,98,33,45]

def switch(list1,list2):
    lists = []
    for day ,year in zip(list1,list2):
        lists.append((day,) + (year,))
    print(lists)
    return lists

switch(list(),list1())

@pytest.mark.parametrize('list1,list2',switch(list(),list1()))
def test_02(list1,list2):
    print(list1,list2)
    assert list1,list2 is not None

代码运行结果:
在这里插入图片描述

第一次写文章有什么建议请大家多多提,一定会参考,谢谢!!!

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老糊涂Lion

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值