Pytest框架之 - fixture

上篇讲了预处理方法setup和teardown可以实现在执行用例前或结束后加入一些操作, 但这种都是针对整个脚本全局生效的, 如果只是几个特定的用例需要, Pytestfixture修饰器时用来标记固定的工厂函数,在其他函数、模块、类或整个工程调用它时会被激活并优先执行,通常会被用于完成预置处理和重复操作

fixture优势

1. 命名方式灵活,不局限于setup和teardown这几个命名
2. conftest.py 配置里可以实现数据共享,不需要import就能自动找到fixture
3. scope="function"    可以实现多个testCase共享前后置
4. scope="class"       可以实现多个class共享前后置
5. scope="module"      可以实现多个.py共享前后置
6. scope="package"     可以实现多个package共享前后置
6. scope="session"     可以实现整个session共享前后置
7. 参数化的实现

fixture参数

@pytest.fixture(scope="function", params=None, autouse=False, ids=None, name=None)

scope:被标记方法的作用域 默认function
    "function": 默认参数,作用于每个测试方法,每个test都运行一次 
    "class": 作用于整个类,每个class的所有test只运行一次 
    "module": 作用于整个模块,每个module的所有test只运行一次 
    "package": 作用于整个package,每个package只运行一次
    "session": 作用于整个session,每个session只运行一次 
autouse: 是否自动运行,默认为False不运行(需要引用才执行),设置为True作用域内自动运行
params: list类型,提供参数数据(参数化),供调用标记方法的函数使用 
ids: 参数是配合fixture的params参数用的,如果没有设置params参数,那么ids毫无意义;ids参数是给每一项params参数设置自定义名称用的;params参数值包含的列表有多少项值,那么ids参数就必须对应有多少项值
name: 装饰器的名称,同一模块的fixture相互调用建议写个不同的name

引用

#!/usr/bin/python3
# coding=utf-8
# Author: 文
###########################   @pytest.fixture()在测试类里面,通过参数引用   ###########################
import pytest

class Test_One():
    @pytest.fixture()
    def default(self):
        print("-------> default")

    def test_1(self, default_01):    # 函数名直接作为参数引用使用 作用域:只在该方法前执行
        print("-------> test_1")

    def test_2(self):
        print("-------> test_2")

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

#############    @pytest.fixture()在测试类之外,通过装饰器@pytest.mark.us
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SitVen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值