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
  • 相关阅读:
    持续集成之Jenkins+sonar自动化部署04
    自动化部署03
    自动化部署02
    自动化部署01
    持续集成之代码质量管理-Sonar
    gitlab-ce安装01
    在Centos7.3安装Zabbix3.4.4服务端
    自动化运维之日志系统上线规范(十)
    自动化运维之日志系统Logstash实践(九)
    自动化运维之日志系统Logstash解耦实践(八)
  • 原文地址:https://www.cnblogs.com/csmashang/p/12603837.html
Copyright © 2011-2022 走看看