zoukankan      html  css  js  c++  java
  • 【Pytest04】全网最全最新的Pytest框架fixture应用篇(2)

    一、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'])

    如果你此文你也有同感,如果你觉得此文对你有帮助,如果你对软件测试、接口测试、自动化测试、面试经验交流感兴趣欢迎加入:

    软件测试技术群:695458161,群里发放的免费资料都是笔者十多年测试生涯的精华。还有同行大神一起交流技术哦。

    作者:来自公众号:软测之家
    出处:https://www.cnblogs.com/csmashang/p/12603837.html
    欢迎转载,但未经作者同意请保留此段声明,并在文章页面明显位置给出原文链接。

    笔者来自公众号:软测之家 软件测试技术交流群:695458161
  • 相关阅读:
    1052 Linked List Sorting (25 分)
    1051 Pop Sequence (25 分)
    1050 String Subtraction (20 分)
    1049 Counting Ones (30 分)
    1048 Find Coins (25 分)
    1047 Student List for Course (25 分)
    1046 Shortest Distance (20 分)
    1045 Favorite Color Stripe (30 分)
    1044 Shopping in Mars (25 分)
    1055 The World's Richest (25 分)
  • 原文地址:https://www.cnblogs.com/csmashang/p/12603837.html
Copyright © 2011-2022 走看看