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

pytest框架的fixture使用

武飞扬头像
扬扬扬~
帮助1

fixture特点

更加灵活–命名不受到之前的命名限定
更加智能–可以通过conftest.py实现自动寻找配置的能力
更好使用–可以通过装饰器模式来指定自己的作用范围

使用方式

fixture(scope=“function”, params=None, autouse=False, ids=None, name=None):
scope: 表示作用域 默认为function,可选择为 “class”, “module” or “session”.
params: 一个可选的参数列表,它将导致多个参数调用fixture功能和所有测试使用它
autouse: 如果为True,则为所有测试激活fixture func 可以看到它。 如果为False(默认值)则显式需要参考来激活fixture
ids: 每个字符串id的列表,每个字符串对应于params 这样他们就是测试ID的一部分。 如果没有提供ID它们将从params自动生成
name: fixture的名称。 这默认为装饰函数的名称。 如果fixture在定义它的同一模块中使用,夹具的功能名称将被请求夹具的功能arg遮蔽;
解决这个问题的一种方法是将装饰函数命名 “fixture_ ”然后使用”@ pytest.fixture(name =‘’)“”。
学新通
运行结果:
学新通
注意:方法1和方法3都是在执行前执行了fixture内容,而方法2没有执行,这就说明了插件配置的灵活性
同样的,在此基础上,我们可以针对于整个项目来进行插件设置–fixture的conftest
新建一个conftest.py 将之前的装饰器代码放进来
学新通
然后测试代码

import pytest
def test_1(login):
    print("我是test1我要登录后执行")


def test_2():
    print("我是test2,我不用登录,也能执行")


def test_3(login):
    print("我是test3,我要登录")





if __name__ == "__main__":
    pytest.main(['-vs'])
学新通

这时候,会发现conftest的执行会变为全局的内容

fixture中的yield函数

fixtrue的装饰器可以用于我们的用例的前置执行逻辑,相应的,如果我们需要在函数执行结束之后需要去做一些其他操作,那么我们也可以进行特定的操作,如yield函数,可以帮助到我们.
代码如下:

import pytest

@pytest.fixture()
def login():
    print("登录成功,账号是xiaoming")
   

    yield
    print("执行teardown操作")
    print("关闭浏览器" )

看一下运行结果:
学新通
总结:
yield前的代码为前置执行逻辑
yiled为分界线,后面的代码为用例结束后执行的代码逻辑
这里的调用都是直接将方法名当做参数传入的
执行流程 – 运行测试用例 --> 发现参数为方法名 --> 寻找同名的函数方法 --> 先执行同名的函数方法 -->碰到yield --> 执行测试用例 -->执行yield后续代码

思考: 如果在执行过程中出现了异常会怎么样?

代码如下:
学新通
看下运行结果:
学新通
由此可见,异常不会影响到yield的执行,会在异常结束后继续执行yield后续的代码。

同样,我们可以思考下,在setup出现异常的时候还会执行yield后续内容吗?

看下代码:

import pytest

@pytest.fixture()
def login():
    print("登录成功,账号是xiaoming")
    3/0


    yield
    print("执行teardown操作")
    print("关闭浏览器" )

看下运行结果:
学新通
当我们人为制造一个异常的时候,会发现,后续的yield不会继续执行了

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhggbghb
系列文章
更多 icon
同类精品
更多 icon
继续加载