pytest框架fixture应用篇-params参数化和parametrize参数化

一、Fixture参数之params参数实现参数化:(可以为list和tuple,或者字典列表,字典元祖等)

实例如下:

import pytest
 
def read_yaml():
    return ['1','2','3']
 
@pytest.fixture(params=read_yaml())
def get_param(request):
    return request.param
 
def test01(get_param):
    print('测试用例:'+get_param)
 
if __name__ == '__main__':
    pytest.main(['-s','pytest-demo.py'])

注意:

1.此例中test01方法被执行了三次,分别使用的数据为'1','2','3',此结果类似于ddt数据驱动的功能。特别注意:这里的request参数名是固定的,然后request.param的param没有s哦。

2.可以把return request.param改成yield request.param,yield也是返回的意思,它和return的区别在于return返回后后面不能接代码,但是yield返回后,后面还可以接代码。

Fixture其他参数:

1.autouse参数:自动执行,上面的示例已经用到了。

2.ids参数:ids参数是给每一项params参数设置自定义名称用的,意义不大。

3.name参数:相对于把被fixture标记的方法重命名,意义不大。如下图所示案例:

@pytest.fixture(name='mashang')   #name参数给fixture设置名称
def login():
    print('登录方法')
    
def testcase(mashang):      #使用name参数名来引用,还用login报错
    print('测试用例')

二:使用@pytest.mark.parametrize()方法实现参数化

方法详情:

parametrize(argnames,argvalues,indirect=False,ids=None,scope=None)

常用参数:

argnames:参数名

argnames:参数值(可以为list和tuple,或者字典列表,字典元祖等),参数值有N个,用例就会执行N次。

(1)使用方式一

import pytest
 
lis = [{'name':'zhangsan'},{'age':'18'},{'sex','男'}]
@pytest.mark.parametrize('caseinfo',lis)
def test01(caseinfo):
    print(caseinfo)
 
if __name__ == '__main__':
    pytest.main(['-s','pytest-demo.py'])

(2)使用方式二类似于@unpack解包功能实现参数化

import pytest
 
lis = [('admin','123'),('admin1','123456')]
@pytest.mark.parametrize('username,password',lis)
def test01(username,password):
    print(username,password)
 
if __name__ == '__main__':
    pytest.main(['-s','pytest-demo.py'])

 三、总结

感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

 

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取  

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值