1、pytest的前置后置夹具 fixture
有些内容是在每个用例执行之前都要运行操作:-- 用例前置
接口:购物车模块先登录 --登录结果 【token鉴权】
UI: 每次用例 打开浏览器 --driver
有些内容在每个用例之后都要运行操作:–用例后置
接口: 数据清除
UI:关闭浏览器
叫做用例的前置和后置。 pytest测试框架中 统一叫做夹具。fixture。
前置: setup
后置: teardown
2、夹具
- 2.1、定义夹具:在函数前面加一个装饰器: @pytest.fixture, 申明后就是夹具。夹具名可自定义。
- 2.2、在测试用例里调用夹具
-第1种:直接在需要使用的测试函数/类中的测试方法中,将夹具名称作为参数传入,只对当前测试函数/方法,执行夹具的前置后置,并得到夹具的返回值
== 用得更多 - -第2种:在测试类/测试方法上面使用:@pytest.mark.usefixtures(“夹具名”) == 不掌握,不能直接得到返回值。
- 写在类上面,类下面每条测试用例方法都会执行前后置
- 写测试用例方法上面,只针对当前这条用例执行前后置
- 2.3、yield: 前置和后置的划分 ,还可以设置夹具的返回值
- 没有yield,默认全部识别为前置代码,没有前后置区分的。–yield,前置和后置的划分
- yield之上的是前置,之下的就是后置
@pytest.fixture
def setup_teardown(): # setup_teardown夹具名可自定义
print("这是前置代码:进行登录操作...")
yield
print("这是后置代码:进行数据清除...")
import pytest
@pytest.fixture
def setup_teardown(): # setup_teardown夹具名可自定义
print("这是前置代码:进行登录操作...")
yield
print("这是后置代码:进行数据清除...")
# setup_teardown()
# 测试用例使用夹具-前置后置
# 购物车测试用例
# # 第1种-1:直接在需要使用的测试函数中,将夹具名称作为参数传入,只对当前测试函数,执行夹具的前置后置
# def test_cart(setup_teardown):
# print("这是购物车的用例执行...")
# assert "加入购物车成功" == "加入购物车成功"
# # 第1种-2:直接在需要使用的类中的