最新接口测试 Pytest参数化处理(1),2024年最新含泪狂刷软件测试基础面试118题

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以戳这里获取

fixture是pytest的闪光点,在pytest中fixture的功能很多,本节主要介绍用fixture的参数化功能。

  • pytest.fixture()中传入的参数为list,用例执行时,遍历list中的值,每传入一次值,则相当于执行一次用例。
  • ps:@pytest.fixture()装饰的函数中,传入了一个参数为request,试试改成其他的会出现什么情况。
  • 这里的测试数据是直接存在list中的,能否存入json文件或者xml文件再进行读取转换为list呢?

fixture_param.png

测试数据和用例分离
  • 参数化数据和用例怎么进行分离呢?可以采用conftest.py文件存储参数化数据和函数,模块下的用例执行时,会自动读取conftest.py文件中的数据
# conftest.py 记住 他叫conftest.py  
  
import pytest  
  
# 准备测试数据  
is_leap = [4, 40, 400, 800, 1996, 2996]
is_not_leap = [1, 100, 500, 1000, 1999, 3000]
is_valueerror = [0, -4, -100, -400, -1996, -2000]
is_typeerror = ['-4', '4', '100', 'ins', '\*\*', '中文']  
  
# params中需要传入list  
@pytest.fixture(params=is\_leap)  
  
def is\_leap\_y(request):
    return request.param@pytest.fixture(params=is\_typeerror)  
  
def is\_type\_error(request):
    return request.param  
  

  • 测试用例文件:
  
# test\_para.py  
  
import sys
sys.path.append('.')  
import is_leap_year  
import pytest  
class TestPara():
    def test\_is\_leap(self, is\_leap\_y):
        assert is_leap_year.is_leap_year(is_leap_y) == True

    def test\_is\_typeerror(self, is\_type\_error):
        with pytest.raises(TypeError):
            is_leap_year.is_leap_year(is_type_error)
  • 测试结果:
PS E:\python\_interface\_test\requests\_practice> pytest -q .\test\_para.py............                                                             [100%]12 passed in 0.03 seconds
pytest.mark.parametrize()方式进行参数化
  • 采用标记函数参数化,传入单个参数,pytest.mark.parametrize(“参数名”,lists)

mark.png

  • 采用标记函数传入多个参数,如pytest.mark.parametrize(“para1, para2”, [(p1_data_0, p2_data_0), (p1_data_1, p2_data_1),…]
  • 测试用例中传入2个参数,year和期望结果,使输入数据与预期结果对应,构造了2组会失败的数据,在执行结果中,可以看到失败原因:

image.png

import sys
sys.path.append('.')  
import is_leap_year  
import pytest  
  
class TestPara():

    # 参数传入year中      
    @pytest.mark.parametrize('year, expected',   
    [(1, False),   
    (4, True),   
    (100, False),   
    (400, True),   
    (500, True)])


![img](https://img-blog.csdnimg.cn/img_convert/4aaaf62f7a5ea3a3c801cb892c7c785c.png)
![img](https://img-blog.csdnimg.cn/img_convert/a3abe3903ac8dddc374306e81a7cf812.png)

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化的资料的朋友,可以戳这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

5ff00ff254613a03fab5e56a57acb)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值