【使用pytest重构项目】pytest参数化处理:参数装饰器pytest.mark.parametrize()、解析列表、元组和字典操作

前言

一直想学习自动化测试,但是都没行动,业余时间学习零零碎碎并记录20210419。

6、使用pytest重构项目

  • pytest框架介绍
  • pytest标记
  • pytest参数化处理
  • pytest Fixtrue
  • pytest allure生成测试报告
  • 使用pytest重构项目

pytest参数化处理

在pytest中,可以使用参数化测试,即每组参数都独立执行一次测试。这种方式使用的工具是:

  • pytest.mark.parametrize(argname,argvalue)
  • 数据类型:列表、元祖、字典

实例:

import pytest

#列表
data = ['小慌慌','留白']
@pytest.mark.parametrize('name',data)
def test1(name):
    print(name)


# 元祖
data2 = [
    (1,2,3),    # 或者[1,2,3]
    (4,5,6)
]
@pytest.mark.parametrize('pwd',data2)
def test2(pwd):
    print(pwd)

data3 = [
    (11,22,33),    # 或者[1,2,3]
    (44,55,66)
]
@pytest.mark.parametrize('a,b,c',data3)
def test3(a,b,c):
    print(a,b,c)


# 字典
data4 = (
    {
        'user': '小慌慌',
        'pwd' : 123456
    },
    {
        'user': '留白',
        'pwd' : 666
    }

)


@pytest.mark.parametrize('dic',data4)
def test4(dic):
    print(dic)

运行结果:

ffdeMBP pytest % pytest -s test_05.py
======================================================================================== test session starts ========================================================================================
platform darwin -- Python 3.7.3, pytest-6.2.3, py-1.10.0, pluggy-0.13.1
rootdir: /Users/ff/PycharmProjects_py3/Selenium_project/testcase/pytest, configfile: pytest.ini
collected 8 items                                                                                                                                                                                   

test_05.py 小慌慌
.留白
.(1, 2, 3)
.(4, 5, 6)
.11 22 33
.44 55 66
.{'user': '小慌慌', 'pwd': 123456}
.{'user': '留白', 'pwd': 666}
.

========================================================================================= 8 passed in 0.02s =========================================================================================
ffdeMBP pytest % 

还可以通过添加id方式来

代码:


# 添加id id的值可以自定义 只要方便理解每个值是干什么的就行
import pytest

data5=[
    pytest.param(1,2,3,id="a+b:pass"),
    # pytest.param(4,5,10,id="a+b:fail")
    pytest.param(5,5,10,id="a+b:pass")
]
def add(a,b):
    return a+b

# 接下来看怎么测试
class TestParametrize(object):
    @pytest.mark.parametrize('a,b,expect',data5)
    def test_paramerrize(self,a,b,expect):
        assert add(a,b)==expect
        print(a+b)

if __name__ == '__main__':
    pytest.main(['-s','test5.py'])

运行结果:

============================= test session starts ==============================
platform darwin -- Python 3.7.3, pytest-6.2.3, py-1.10.0, pluggy-0.13.1
rootdir: /Users/ff/PycharmProjects_py3/Selenium_project/testcase/pytest, configfile: pytest.inicollected 2 items

test5.py .3
.10
                                                              [100%]

============================== 2 passed in 0.02s ===============================

Process finished with exit code 0

“永不放弃,总有希望在前面等待!”送给自己,也送给正在阅读文章的博友们~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小慌慌

感谢博友的鼓励,快乐分享~

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

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

打赏作者

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

抵扣说明:

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

余额充值