• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Pytest----fixture传值的作用

武飞扬头像
redrose2100
帮助1

【原文链接】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
系列文章
更多 icon
同类精品
更多 icon
继续加载