zoukankan      html  css  js  c++  java
  • 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值的时候,两种方法都可以。

    '''
  • 相关阅读:
    python学习笔记(9)-python编程风格
    python学习笔记(8)-实现linux系统python命令行光标移动
    python学习笔记(7)--python版本升级
    python学习笔记(6)--三种运行Python的方式
    python学习笔记(5)--python环境变量配置
    python学习笔记(4)--Python安装
    python学习笔记(3)--python获取对象帮助信息
    网络基础知识
    重写equals方法
    当在浏览器输入一个url访问后发生了什么
  • 原文地址:https://www.cnblogs.com/nuonuozhou/p/10429846.html
Copyright © 2011-2022 走看看