pytest--测试夹具fixtrue(四)

当想在运行测试用例前运行一些代码时,如测试数据的准备,数据库的初始化连接、关闭;打开浏览器、关闭浏览器;等前置条件后置处理都可以使用fixture来实现。

创建方法如下:
定义fixture与普通函数差不多,唯一区别就是在函数上加装饰器@pytest.fixture(),fixture命名不要以test开头,跟用例区分开。
如需引用fixtrue的前置条件则需要把fixture的函数名称做为用例函数的参数传入。

如下:执行test_one时会先执行fix函数,test_two则没有执行在这里插入图片描述
引用fixtrue方式二:直接在测试用例前面加装饰器pytest.mark.userxtrues(fixtrue_name),传入fixtrue_name(fixtrue函数名称)
在这里插入图片描述
但是如果有很多测试用例文件时,并且它引用的前置条件是一样的,用例写的越来越多的时候,难道每个py文件都重新定义一遍?或者可以定义在特殊的文件当中,需要直接调用就好了。

当然pytest已经准备好了这个公共文件conftest.py。而且完全不需要引用这个文件,pytest用例会自动识别该文件。
规则如下:

  1. 固定名conftest
  2. conftest文件必须和测试用例放在一起,和测试用例文件是同级,不同目录下可以创建不同的conftest,但作用范围只在当前用例目录的层级生效。
    在这里插入图片描述

如下将fixtrue的函数放到conftest.py文件中,运行测试用例demo6与demo7
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
运行结果:
在这里插入图片描述
来看下fixtrue的参数列表:
在这里插入图片描述
主要介绍下scope的作用范围与autouse。
scope:有四个级别参数"function",“class”,“module”,“session”

scope=”funciton”:
默认是function,作用范围每个测试用例执行前都会运行一次:
在这里插入图片描述
scope=”class”:
fixture为class级别的时候,如果一个class里面有多个用例,都调用了次fixture,那么此fixture只在此class里所有用例开始前执行一次
在这里插入图片描述
scope=“module”:
fixture为module时,在当前.py脚本里面所有用例开始前只执行一次。
在这里插入图片描述
scope=“session”

fixture为session级别是可以跨.py模块调用的,也就是当我们有多个.py文件的用例的时候,如果运行所有用例时只需调用一次fixture,那就可以设置为scope=“session”,写到conftest.py文件里。
在这里插入图片描述

运行测试用例demo6.py:
在这里插入图片描述
demo7.py
在这里插入图片描述
运行结果:
在这里插入图片描述
autouse:默认是False,需要用例手动调用fixture;如果是True,所有作用域内的测试用例都会自动调用该fixture
在这里插入图片描述
前面介绍的只是前置条件的操作,接下来看下后置条件是如何实现的;fixture中实现后置条件并不是一个独立的函数,用关键字yield分隔前置操作和后置操作。如果没用后置,那么关键字yield就不用写。如下
在这里插入图片描述
如需要用的fixtrue中的返回值则直接用yield返回即可:
在这里插入图片描述
运行结果:
在这里插入图片描述

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

久醉绕心弦,

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值