• Pytest学习之use fixtures


    '''当用例需要调用fixture时,前面讲到可以直接在用例里加fixture参数,如果一个测试class都需要用到fixture,每个用例都去传参,会比较麻烦,这个时候,
    可以在class外面加usefixtures装饰器,让整个class都调用fixture'''
    '''
    调用fixture的三种方法
    1.函数或类里面方法直接传fixture的函数名称
    2.使用装饰器@pyets.mark.usefixtures()修饰
    3.autouse=True自动使用
    '''

    '''用例传fixture参数
    方法一:先定义start功能 用例全部传start参数,调用该功能

    '''

    import time
    import pytest

    @pytest.fixture(scope="function")
    def start(request):
    print(" -----开始执行function-----")

    def test_a(start):
    print("-----用例a执行-----")

    class Test_aaa():
    def test_o1(self,start):
    print("----用例01---------")

    def test_02(self,start):
    print("----用例02---------")

    if __name__ == '__main__':
    pytest.main(["-s","usefixtures.py"])

    '''
    运行结果
    usefixtures.py
    -----开始执行function-----
    .-----用例a执行-----

    -----开始执行function-----
    .----用例01---------

    -----开始执行function-----
    .----用例02---------
    '''

    '''装饰器usefixtures
    方法二:使用装饰器@pytest.mark.usefixtures()修饰需要运行的用例
    '''

    @pytest.fixture(scope="function")
    def start():
    print(" -----开始执行function------")

    @pytest.mark.usefixtures("start")
    def test_a():
    print("------用例a执行------")

    @pytest.mark.usefixtures("start")
    class Test_aaa():
    def test_01(self):
    print("------用例01-------")

    def test_02(self):
    print("------用例02-------")

    if __name__ == '__main__':
    pytest.main(["-s","usefixtures.py"])

    '''
    叠加fixture
    如果class用例需要同时调用多个fixture,可以使用@pytest.mark.usefixtures()叠加。注意叠加顺序,先执行的放底层,后执行的放上层
    '''

    @pytest.fixture(scope="module")
    def first():
    print("第一步:操作aaa")

    @pytest.fixture(scope="module")
    def second():
    print("第二步:操作bbb")

    @pytest.mark.usefixtures("second")
    @pytest.mark.usefixtures("first")
    class TestFix():
    def test_1(self):
    print("用例1")
    assert 1==1

    def test_2(self):
    print("用例2")
    assert 2==2
    if __name__ == '__main__':
    pytest.main(["-s","usefixtures.py"])

    '''
    usefixtures与传fixture区别
    通过上面2个案例,对usefixtures使用基本方法已经掌握了,但是你会发现,我上面给的2个案例的fixture是没有返回值的。如果fixture有返回值,那么usefixtures就无法获取到返回值了,这个是它与用例直接传fixture参数的区别。
    也就是说当fixture用return值需要使用时,只能在用例里面传fixture参数了。
    当fixture没有return值的时候,两种方法都可以。

    '''
  • 相关阅读:
    进程笔记(一)
    Docker(二) 镜像
    Docker(一) 简介
    Nginx(二) 常用配置
    4、ABPZero系列教程之拼多多卖家工具 集成短信发送模块
    3、ABPZero系列教程之拼多多卖家工具 项目修改及优化
    2、ABPZero系列教程之拼多多卖家工具 更改数据库为Mysql
    1、ABPZero系列教程之拼多多卖家工具 前言
    asp.net mvc 记录Action耗时
    [转]C#异步的世界【上】
  • 原文地址:https://www.cnblogs.com/nuonuozhou/p/10429846.html
Copyright © 2020-2023  润新知