当前位置:   article > 正文

pytest--测试夹具fixtrue(四)_pytest夹具fixture

pytest夹具fixture

当想在运行测试用例前运行一些代码时,如测试数据的准备,数据库的初始化连接、关闭;打开浏览器、关闭浏览器;等前置条件后置处理都可以使用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返回即可:
在这里插入图片描述
运行结果:
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/672658
推荐阅读
相关标签
  

闽ICP备14008679号