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
  • 相关阅读:
    【C#进阶系列】06 类型和成员基础
    纪中5日T1 1564. 旅游
    纪中17日T1 2321. 方程
    纪中17日T2 2322. capacitor
    纪中10日T1 2313. 动态仙人掌
    纪中14日听课小结 图论 最短路 二分图 差分约束
    一个抓猫的游戏 消遣GAME 持续更新中!
    洛谷P1464 Function  HDU P1579 Function Run Fun
    洛谷P1976 鸡蛋饼
    纪中12日T1 2307. 选择
  • 原文地址:https://www.cnblogs.com/csmashang/p/12553981.html
Copyright © 2011-2022 走看看