Pytest----fixture传值的作用
众所周知,fixture是pytest中的一个非常重要的功能,同时又被普遍认为是一个非常难懂的功能,这里我们就从fixture最简单的功能讲起。
为了更好的讲解fixture的功能,这里直接以代码为例,首先fixture最简单的功能就是传值的作用,什么意思呢,首先看如下一段代码,这面test_func(get_num) 很显然是一个测试函数,而get_num就是一个fixture,即fixture的定义跟定义函数是一样的,只不过在此函数上面通过 @pytest.fixture() 装饰,get_num这个fixture中直接返回一个数字10,当然在实际应用可能会经过一系列的计算处理,最后将得出的结果返回,而在测试函数test_func的形参的位置直接使用get_num这个fixture的名,如果在学习fixture之前,这里会把get_nunm认为是test_func的一个形参,这里因为get_num给 @pytest.fixture 声明为一个fixture,此时在测试函数test_func(get_num) 中其实就相当于是 test_func(get_num()) ,因此在测试函数中直接对 get_num 进行断言,期望get_num等于9,这就是fixture的传值的使用方法。这里可以看出,如果get_num没有给声明为fixture,那么这里的断言语句肯定是错误的,因为get_num是函数对象了,而当get_num被声明为fixture时,get_num就表示get_num这个函数的返回值了。
import pytest
@pytest.fixture()
def get_num():
print("\nin get_num fixture...")
return 10
def test_func(get_num):
assert get_num == 9
通过pytest –s 执行结果如下,可以看出,在测试函数中,get_num此时确实不是一个函数对象,而是get_num函数的返回值10,。
(demo-HCIhX0Hq) E:\demo>pytest -s
=================== test session starts ===================
platform win32 -- Python 3.7.9, pytest-7.1.3, pluggy-1.0.0
rootdir: E:\demo
plugins: assume-2.4.3, rerunfailures-10.2
collected 1 item
test_demo.py
in get_num fixture...
F
======================== FAILURES =========================
________________________ test_func ________________________
get_num = 10
def test_func(get_num):
> assert get_num == 9
E assert 10 == 9
test_demo.py:9: AssertionError
================= short test summary info =================
FAILED test_demo.py::test_func - assert 10 == 9
==================== 1 failed in 0.07s ====================
(demo-HCIhX0Hq) E:\demo>
这就是fixture最简单的应用,这个功能非常适合于当一个数据需要经过复杂的处理,但是这个数据对于测试用例来说就是个被测数据或者就是个入参的场景,如果没有fixture的应用,则只能通过定义函数的方式来实现了,而通过fixture的方式则显得非常简洁。
这篇好文章是转载于:编程之路
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 编程之路
- 本文地址: /boutique/detail/tanhhgbckf
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
excel下划线不显示怎么办
PHP中文网 06-23 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
微信运动停用后别人还能看到步数吗
PHP中文网 07-22 -
excel打印预览压线压字怎么办
PHP中文网 06-22