pytest 前后置 fixture装饰器

2022-10-29 09:35:24

pytest.fixture
pytest框架有一种通过装饰器实现的夹具机制。


1. 定义


通过装饰器 @pytest.fixture 可以定义

@pytest.fixture
def fixture_func():
print('前置条件')
yield
print('后置条件')

2.调用夹具


在测试用例上调用夹具有两种方式
1. 通过装饰 @pytest.mark.usefixtures(fixture_name)

@pytest.mark.usefixtures("fixture_func")
def testsomething():
print('开始测试')

2. 通过在测试函数中定义与夹具函数名同名的参数
这种方式还可以接收夹具的返回值

@pytest.fixture
def db():
import pymysql
with pymysql.connnect() as conn:
yield conn
@pytest.mark.usefixtures("fixture_func")
def testa(db):
cursor = db.cursor()
cursor.execute('select * from student')
assert cursor.fetch_one()

3. 夹具的作用范围


通过@pytest.fixture装饰器的参数scope可以指定夹具的作用范围
scope的取值有:
function 默认范围,函数范围,在测试完成后结束
class 在类中最后一个测试完成后结束
module 在模块中最后一个测试完成后结束
package 在包中的最后一个测试完成后结束
session 在一次会话中的最有一个测试完成后结束

4. 共享夹具


如果一个夹具需要被多个测试文件使用,则可以将其移至一个conftest.py文件中,不需要在测试中导
入,它会自动被发现。


5.使用夹具的夹具


除了可以在测试函数中使用夹具外,夹具功能还可以使用其他的夹具。这有助于夹具的模块化设计,并
允许在许多项目中重复使用特定的夹具。
注意夹具的使用只能是使用范围更广的夹具,反过来不行。模块级别的夹具不能使用类级别的夹具。

  • 作者:zoraho
  • 原文链接:https://blog.csdn.net/weixin_38582466/article/details/125174440
    更新时间:2022-10-29 09:35:24