• 【Pytest03】全网最全最新的Pytest框架fixture应用篇(1)


    fixtrue修饰器标记的方法通常用于在其他函数、模块、类或者整个工程调用时会优先执行,通常会被用于完成预置处理和重复操作。例如:登录,执行SQL等操作。

    完整方法如下:fixture(scope='function',params=None,autouse=False,ids=None,name=None)

    参数说明:

    1.scope参数:标记方法的作用域。有4个可选值:function(默认,函数)、class(类)、module(模块)、package/session(包)

    (1)作用域为函数实例

    import pytest
    
    @pytest.fixture(scope='function',autouse=True)
    def login():
        print('登录系统')
    
    def test_01():
        print('测试用例一')
    
    class TestCase:
    
        def test_03(self):
            print('测试用例三')
    
        def test04(self):
            print('测试用例四')
    
    if __name__ == '__main__':
        pytest.main(['-s','pytest-demo.py'])
    

    注意:该模块中所有的函数在执行之前都会执行login函数。

    (2)作用域为类实例一:

    import pytest
    
    @pytest.fixture(scope='class',autouse=True)
    def login():
        print('登录系统')
    
    def test_01():
        print('测试用例一')
    
    class TestCase1:
        def test_03(self):
            print('测试用例三')
        def test04(self):
            print('测试用例四')
    
    class TestCase2:
        def test_05(self):
            print('测试用例五')
        def test06(self):
            print('测试用例六')
    
    if __name__ == '__main__':
        pytest.main(['-s','pytest-demo.py'])
    

    注意:在TestCase1类和TestCase2类中,login方法都只会被执行一次。函数test_01也会执行一次。

    (2) 作用域为类实例二:

    import pytest
    
    @pytest.fixture()
    def login():
        print('登录系统')
    
    def test_01():
        print('测试用例一')
    
    @pytest.mark.usefixtures('login')
    class TestCase:
    
        def test_03(self):
            print('测试用例三')
    
        def test04(self):
            print('测试用例四')
    
    if __name__ == '__main__':
        pytest.main(['-s','pytest-demo.py'])
    

    注意:此方式函数不会被执行,但是被作用的类中的每个函数执行之前都会执行一次,在测试类前面添加:@pytest.mark.usefixtures('login') 其中login为函数名。

    (3)作用域为module时表示整个模块中都只会执行一次。这里不在累述。

    (4)作用域为package时表示整个包都只会执行一次。这里不在累述。

    (5)在N个用例中指定某一个用例执行

    import pytest
    
    @pytest.fixture()
    def login():
        print('登录系统')
    
    def test_01():
        print('测试用例一')
    
    class TestCase1:
        def test_03(self):
            print('测试用例三')
        def test04(self,login):
            print('测试用例四')
    
    if __name__ == '__main__':
        pytest.main(['-s','pytest-demo.py'])
    

    注意:test04以参数的形式传入了执行的方法login,这样来指定只有test04方法在执行时才执行login方法。

    特别注意:如果在login函数中加入reutrn 'success',在test04方法中加入print(login),那么print(login)打印的值就是返回的success.

     

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

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

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

    笔者来自公众号:软测之家 软件测试技术交流群:695458161
  • 相关阅读:
    把redhat5.4-linux2.6.18内核升级到2.6.24 vmware虚拟机中
    webdeploy 使用总结(二)
    System.Web.UI.Page 详解(转)
    Dapper常用方法总结
    webdeploy 使用总结(一)
    Log4Net 详解(转)
    C# 日志工具汇总(转)
    Global.asax 详解(转)
    Transfer与Redirect区别(转)
    web.config配置节system.webServer的子元素详细介绍
  • 原文地址:https://www.cnblogs.com/csmashang/p/12553981.html
Copyright © 2020-2023  润新知