zoukankan      html  css  js  c++  java
  • 【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
  • 相关阅读:
    modifier key
    功能权限与数据权限的转换、功能权限的分散
    the relationship among AdapterFactory, Adapter, Adaptee and Viewer
    MANIFEST.MF
    eclipse plugin中开发的一些注意事项
    Why is it necessary for an interface to be "declared" abstract?
    防卫力量与公共安全:SAP与地理信息的集成
    SQL Server联机丛书:存储过程及其创建
    伤感的英文单词[转帖]
    ASP中得到当前页面完整URL的方法[转帖]
  • 原文地址:https://www.cnblogs.com/csmashang/p/12553981.html
Copyright © 2011-2022 走看看