zoukankan      html  css  js  c++  java
  • 直播

    ###课程贴地址

    https://ceshiren.com/t/topic/9916

    fixture

    调用方式

    • 测试用例中传入 fixture 方法名
    • @pytest.mark.usefixtures("login")
    • 自动调用:@pytest.fixture(autouse=True)

    作用域

    • 控制方法:@pytest.fixture(scope='')
    • scope 的取值
      • function
      • class
      • module
      • session

    fixture 方法返回值的获取

    • 在测试用例中使用 fixture 方法名就可以获取到 yield 后面的返回值

    作用:

    定义传入测试中的数据集

    配置测试前系统的初始状态

    为批量测试提供数据源等

    场景一:自动化中应用

    测试用例执行时,有的用例需要登陆才能执行,有些用例不需要登录

    setup  和teardown无法满足

    #!/usr/bin/env python
    # -*-coding:utf-8 -*-
    # -*-hanjingjing-*-
    import pytest
    
    
    @pytest.fixture()
    def login():
        print("登录操作")
    
    #测试用例1,需要提前登录
    #在测试用例中传入fix方法名
    def test_case1(login):
        print("测试用例1")
    
    
    def test_case2():
        print("测试用例2")
    
    #测试用例3,需要提前登录
    def test_case3(login):
        print("测试用例3")
    
    #测试用例4,需要提前登录
    #用装饰器的方法,将函数名用字符串方式传入
    @pytest.mark.usefixtures('login')
    def test_case4():
        print("测试用例4")

     

     注:

    获取fixture 方法的返回值,直接调用fixture方法名

    #!/usr/bin/env python
    # -*-coding:utf-8 -*-
    # -*-hanjingjing-*-
    import pytest
    
    
    @pytest.fixture()
    def login():
        print("登录操作")
        print('获取 token')
        username = "tom"
        password = "123456"
        token = "tokerjdjdkkdiid"
        #yield关键字可以激活fixture的teardown功能
        #yeild相当于ruturn,返回数据可以直接跟在yield后面
        yield[username,password,token]
        print("注销操作")
    
    
    # 测试用例1需要登录操作
    def test_case1(login):
        print(f"用户信息返回:{login}")
        print("这是测试用例1")

     

     如果所用用例都需要调用“登录模块

    则需要:autouse

    @pytest.fixture(autouse= True)
    #!/usr/bin/env python
    # -*-coding:utf-8 -*-
    # -*-hanjingjing-*-
    import pytest
    
    
    @pytest.fixture(autouse= True)
    def login():
        print("登录操作")
        print('获取 token')
        username = "tom"
        password = "123456"
        token = "tokerjdjdkkdiid"
        #yield关键字可以激活fixture的teardown功能
        #yeild相当于ruturn,返回数据可以直接跟在yield后面
        yield[username,password,token]
        print("注销操作")
    
    
    # 测试用例1需要登录操作
    def test_case1(login):
        print(f"用户信息返回:{login}")
        print("这是测试用例1")
    
    
    def test_case2():
        print("这是测试用例2")
    
    
    # 测试用例3需要登录操作
    def test_case3(login):
        print("这是测试用例3")
    
    #c测试用例4,用装饰器的方法
    #方法名作为字符串的方式的传入
    @pytest.mark.usefixtures("login")
    def test_case4():
        print("这是测试用例41")

    1)function

    import pytest
    
    @pytest.fixture(scope='function')
    def connectDB():
        print("连接数据库操作")
        yield
        print("断开数据库操作")
    
    class TestDemo:
    
        def test_a(self,connectDB):
            print("测试用例a")
    
        def test_b(self,connectDB):
            print("测试用例b")
    
    
    class TestDemo1:
    
        def test_c(self,connectDB):
            print("测试用例c")
    
        def test_d(self,connectDB):
            print("测试用例d")

    输出结果

    两个函数调用两次

     2)class

    一个类调一次

    #!/usr/bin/env python
    # -*-coding:utf-8 -*-
    # -*-hanjingjing-*-
    import pytest
    
    @pytest.fixture(scope='class')
    def connectDB():
        print("连接数据库操作")
        yield
        print("断开数据库操作")
    
    class TestDemo:
    
        def test_a(self,connectDB):
            print("测试用例a")
    
        def test_b(self,connectDB):
            print("测试用例b")
    
        def test_a(self,connectDB):
            print("测试用例a")
    
        def test_e(self,connectDB):
            print("测试用例e")
    
    class TestDemo1:
    
        def test_c(self,connectDB):
            print("测试用例c")
    
        def test_d(self,connectDB):
            print("测试用例d")

    输出结果

    3)module

    整个文件调用一下

    #!/usr/bin/env python
    # -*-coding:utf-8 -*-
    # -*-hanjingjing-*-
    import pytest
    
    @pytest.fixture(scope='module')
    def connectDB():
        print("连接数据库操作")
        yield
        print("断开数据库操作")
    
    class TestDemo:
    
        def test_a(self,connectDB):
            print("测试用例a")
    
        def test_b(self,connectDB):
            print("测试用例b")
    
        def test_a(self,connectDB):
            print("测试用例a")
    
        def test_e(self,connectDB):
            print("测试用例e")
    
    class TestDemo1:
    
        def test_c(self,connectDB):
            print("测试用例c")
    
        def test_d(self,connectDB):
            print("测试用例d")

    输出结果

  • 相关阅读:
    TCP 窗口缩放、时间戳和 SACK
    对微前端的11个错误认识
    终于解决了使用Python装饰器的一个痛点
    go使用mongo
    获取鼠标当前元素
    console控制台屏蔽console
    httpx使用HTTP/2
    go解析未知结构的json
    python字典转对象
    .::Best Musica Paradisa::.
  • 原文地址:https://www.cnblogs.com/hantongxue/p/14364529.html
Copyright © 2011-2022 走看看