pytest的fixture使用语法说明
fixture功能
fixture作用
在unittest中我们可以使用setup和teardown进行初始化操作,但是在pytest中我们一般不会去使用setup和teardown进行初始化操作,而是使用fixture进行被测对象的初始化1,fixture在使用过程中我们主要关注它的作用域和参数化的作用,下面就讲解这两种使用规则
fixture基本使用
import pytest
@pytest.fixture()
def some_data():
return 42
def test_some_data(some_data):
assert some_data ==42
#运行结果
"""
plugins: allure-pytest-2.9.45, Faker-13.15.1, json-report-1.5.0, metadata-2.0.2
collected 1 item
test_tttttpython.py
SETUP S _session_faker
SETUP F some_data
test_tttttpython.py::test_some_data (fixtures used: _session_faker, request, some_data).
TEARDOWN F some_data
TEARDOWN S _session_faker
================ 1 passed in 0.12s ===============
"""
解释:
- 被测函数执行前后运行的操作,使用@pytest.fixture()装饰器进行修饰,标识这个函数是被测函数的初始化操作
- 被测函数中参数传递fixture修饰的函数的函数名,可以在pytest框架中自动执行返回函数的返回值
- 使用pytest --setup-show 运行文件,可以打印出详情,也就是被测函数的运行详情信息
fixture的作用域
fixture函数作用域为funciton、class、module、session、package下面一个一个地说明,直接运行函数可以看出结果
#scope="funciton"
@pytest.fixture(scope="function")
def some_data():
return 42
def test_some_data1(some_data):
assert some_data ==42
def test_some_data2(some_data):
assert some_data ==42
#scope="class"
@pytest.fixture(scope="class")
def some_data():
return 42
class Test_1():
def test_some_data1(self,some_data):
assert some_data ==42
def test_some_data2(self,some_data):
assert some_data ==42
#scope="module"
@pytest.fixture(scope="module")
def some_data():
return 42
def test_some_data3(some_data):
assert some_data ==42
class Test_1():
def test_some_data1(self,some_data):
assert some_data ==42
def test_some_data2(self,some_data):
assert some_data ==42
#scope="session"
#conftest.py(同级目录新建)
@pytest.fixture(scope="session")
def some_data():
return 42
#test_demo.py
class Test_1():
def test_some_data1(self,some_data):
assert some_data ==42
def test_some_data2(self,some_data):
assert some_data ==42
#test_demo2.py
class Test_2():
def test_some_data3(self,some_data):
assert some_data ==42
def test_some_data4(self,some_data):
assert some_data ==42
function<class<module<package<session;其中function指的是函数,class指的是类,module对应我们的py文件,package指的是包,session指的是我们运行一次的这个会话;在package和session层我们就要在同级目录下进行新建conftest.py存储我们的fixture了,其中conftest文件pytest内部会自动识别
fixture的参数化request
request在官方中的说明是pytest中的fixture内置函数,为请求对象提供请求测试上下文访问权限
para =[{"A":1,"B":2}]
@pytest.fixture(params=para)
def some_data(request):
return request.param
def test_some_data3(some_data):
assert some_data ==42
class Test_1():
def test_some_data1(self,some_data):
assert some_data["A"] ==42
def test_some_data2(self,some_data):
assert some_data["B"] ==42
===== short test summary info =====
FAILED test_tttttpython.py::test_some_data3[some_data0] - AssertionError: assert {'A': 1, 'B': 2} == 42
FAILED test_tttttpython.py::Test_1::test_some_data1[some_data0] - assert 1 == 42
FAILED test_tttttpython.py::Test_1::test_some_data2[some_data0] - assert 2 == 42
=== 3 failed in 0.22s ===
解释:
- fixture中允许传入参数params类型可以为列表字典
- request.param为被测对象提供上(获取param中的值)、下(调用fixture函数)管理
-
初始化我们也可以成为夹具,在被测对象执行前后,像汉堡包一样,这种被测对象执行前后的模式,我们也可以称之为上下文管理 ↩︎
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgcejeg
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01