pytest fixture scoop(用例执行的前后操作)

设置fixture 的scope
https://docs.pytest.org/en/stable/fixture.html#fixtures

在执行自动化脚本的时候,有时需要在执行所有的用例之前或者所有的用例之后要进行某些操纵。
比如:在运行所有的用例之前需要对数据库进行恢复操作。

在项目的根目录下创建 conftest.py , pytest 在运行的时候会自动加载此文件中定义的方法。
fixture执行域 scope=“session”

所有用例执行之前和之后的操作 。

import pytest

@pytest.fixture(scope=‘session’,autouse=True)
def session_controller():
# 定义所有用例之前执行的操作
print(‘所有的用例运行之前的操作。。。。’)
yield
print(‘所有的用例运行之后的操作。。。。’)
import pytest
import requests

@pytest.fixture(scope=‘session’,autouse=True)
def session_controller():
# 定义所有用例之前执行的操作
print(‘所有的用例运行之前的操作。。。。’)
url = “https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=9d1dd035-d81c-4961-99ea-b27f33e048d8”
jsondata = {
“msgtype”: “text”,
“text”: {
“content”: “所有的用例开始执行。。。”
}
}
requests.post(url,json=jsondata)
yield
# 所有的用例执行之后
url = “https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=9d1dd035-d81c-4961-99ea-b27f33e048d8”
jsondata = {
“msgtype”: “text”,
“text”: {
“content”: “所有的用例已经执行完毕。。。”
}
}

requests.post(url, json=jsondata)

fixtutre scope = “module”
模块级别执行。在每个py文件执行之前和之后的操作 可以使用scope=‘module’
@pytest.fixture(scope=‘module’,autouse=True)
def module_controller():
print(‘每个Py文件执行之前。。。’)
yield
print(‘每个py文件执行之后。。。’)

fixture scope=‘class’
class 类级别的执行顺序,在类之前和之后执行操作。
@pytest.fixture(scope=‘class’,autouse=True)
def class_controller():
print(‘class 执行之前的操作。。。’)
yield
print(‘class 执行之后的操作。。。’)

fixture scope=‘function’
function 函数级别的执行顺序,每个函数之前和之后的操作。
@pytest.fixture(scope=‘function’,autouse=True)
def function_controller():
print(‘函数执行之前。。。。’)
yield
print(‘函数执行之后。。。。’)
参考
迭代器,装饰器: https://www.bilibili.com/video/BV1x54y1Y7A4/
pytest 的装饰器:https://www.bilibili.com/video/BV1k54y1a72E/

猜你喜欢

转载自blog.csdn.net/HAHH404/article/details/121608362