unittest的前置后置,pytest的fixture和共享机制conftest.py
Unittest
setUp/tearDown
setUp当中得到的变量,用self.xxx = value传递给测试用例
setUpClass/tearDownClass
setupClass当中得到的变量,用cls.xxx = value传递给测试用例
pytest
pytest有两种前置后置,一种是沿用unittest风格setup/teardown, setup_class/teardown_class
另一种测试fixture
定义fixture
@pytest.fixture #定义fixture必须用这个装饰器
def fix():
print(“前置代码”)
yield # yield为前置后置的分割线
print(“后置代码”)
fixture有4个作用域。
测试函数(function)、测试类(class)、测试模块文件(module)、测试会话(session)
@pytest.fixture(scope="function"(默认值)/"class"/"module"/"session")
def xxxx():
pass
设置fixture的返回值
@pytest.fixture
def init():
print("测试函数的前置")
yield "test","abc" #fixture的返回值放在yield旁
print("测试函数的后置")
调用fixture返回值
@pytest.mark.usefixtures("init") #调用函数名为init的fixture
def test_bbb(init): #把函数名为init的fixture的返回值作为参数传入这个测试函数里
print(init)

如果fixture有返回值,那么,将它作为测试函数的参数时,可以不用装饰器,如下图

fixture的共享机制conftest.py
1.放的都是fixture
2.文件名不能更改。不同包下,可以创建多个
3.对外共享
4.共享范围:
同级共享
向下共享
5.优先级:就近原则。如调用fixture后如何知道定义在哪个文件,查找路线:自己模块 > 同级 > 往上
都找不到,报错
共享是定义好fixture后,被测试函数调用
就近原则,是测试用例调用的fixture,向上查找放在哪个conftest文件里
6.嵌套
如下代码,init2里嵌套这init的代码
@pytest.fixture
def init():
print("* init before *")
yield "i am init"
print("* init after *")
@pytest.fixture
def init2(init): # 继承init的前置后置,再它的基础上增加一些内容
print("* init2 before *")
yield init # 继承init的返回值
print("* init2 after *")
测试函数调用init2
@pytest.mark.usefixtures("init2")
def test_data1():
assert True
运行结果:先运行init前置,再运行init2的前置,接着运行init2的后置,最后运行init的后置
什么时候嵌套? 一个fixture想完全使用另一个fixture,并在人家的基础上新增一些代码
当测试过程需要连接DB时,可以在conftest.py定义好如下代码,在需要用的测试函数调用这个fixture就好。
这个fixture定义scope为session,是一旦运行main模块,就立即启动db,运行完后则关闭db,autouse是自动使用这个fixture的开关,module、class、function的不建议开启autouse
@pytest.fixture(scope="session",autouse=True)
def db_fixture():
db = HandleDB() # 实例化DB
yield db
db.close() # 关闭连接
unittest的前置后置,pytest的fixture和共享机制conftest.py的更多相关文章
- pytest_前置后置
今天总结下pytest,pytest简直就是python自动化中的高富帅,各种操作,哈哈 这次总结主要涉及到了以下几点: 1.unittest中的setUp.tearDown.setUpClass.t ...
- spring 切面 前置后置通知 环绕通知demo
环绕通知: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http:// ...
- AOP 环绕通知 集成了前置 后置 返回通知等功能
AOP 环绕通知 集成了前置 后置 返回通知等功能
- Spring Bean前置后置处理器的使用
Spirng中BeanPostProcessor和InstantiationAwareBeanPostProcessorAdapter两个接口都可以实现对bean前置后置处理的效果,那这次先讲解一下B ...
- C: printf参数执行顺序与前置后置自增自减的影响
起源: 今天在了解副作用side-effect的过程中,看到了下面的网页,把我带到了由printf引起的一系列问题,纠结了一整天,勉强弄懂. 第一个代码没什么好解释的.而第二个printf(" ...
- Spring -- aop(面向切面编程),前置&后置&环绕&抛异常通知,引入通知,自动代理
1.概要 aop:面向方面编程.不改变源代码,还为类增加新的功能.(代理) 切面:实现的交叉功能. 通知:切面的实际实现(通知要做什么,怎么做). 连接点:应用程序执行过程期间,可以插入切面的地点. ...
- android实现前置后置摄像头相互切换
首先自定义一个继承自SurfaceView并且实现了SurfaceHolder.Callback接口的组件: public class CameraView extends SurfaceView i ...
- thinkphp5使用前置后置操作
下面举个例子,前置删除的例子 模型事件只可以在调用模型的方法才能生效,使用查询构造器通过Db类操作是无效的 控制器中实例化类 $cate=model('cate'); $cate-> ...
- vue路由导航守卫及前置后置钩子函数参数详解
首先构建一个测试demo如下图: 接着来探讨路由配置界面 import Vue from 'vue' import Router from 'vue-router' // import HelloWo ...
随机推荐
- Spring Boot 轻量替代框架 Solon 1.3.29 发布
Solon 是一个微型的Java开发框架.项目2018年启动,参考过大量前人作品:内核0.1m的身材,超高的跑分,以及良好的使用体验.支持:RPC.REST API.MVC.WebSocket.Soc ...
- 1087 All Roads Lead to Rome
Indeed there are many different tourist routes from our city to Rome. You are supposed to find your ...
- Sublime Text 3.1 3170 / 3176 注册码(附降级与禁止更新方法)
3.1 3176 可用注册码 127.0.0.1 www.sublimetext.com 127.0.0.1 license.sublimehq.com ----- BEGIN LICENSE --- ...
- hdu4530 水题
题意: 小Q系列故事--大笨钟 Time Limit: 600/200 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Total ...
- 从苏宁电器到卡巴斯基第29篇:难忘的三年硕士时光 VII
我们可能无家可归 那天晚上和导师道别后,我们几个还聚在一起开了一个小会.当时大家觉得最坏的情况就是学院不肯让步,不能满足我们导师提出的条件.那么这样的话,我们几个只能够重新找导师了.而我们数媒专业里面 ...
- hdu4411 经典费用里建图
题意: 给以一个无向图,0 - n,警察在0,他们有k个警队,要派一些警队去1--n个城市抓小偷, 问所有吧所有小偷全抓到然后在返回0的最小路径和是多少,当地i个城市被攻击的时候他会通知i ...
- POJ 3613 快速幂+Floyd变形(求限制k条路径的最短路)
题意: 给你一个无向图,然后给了一个起点s和终点e,然后问从s到e的最短路是多少,中途有一个限制,那就是必须走k条边,路径可以反复走. 思路: 感觉很赞的一个题目,据说证明是什 ...
- Linux中数据库的安装和配置(MySQL与Maria DB)
目录 MySQL和Maria DB的介绍 MySQL和Maria DB的安装 yum源安装MySQL(Centos6.5+Mysql5.1) 源码包安装MySQL yum源安装Maria DB 源码包 ...
- Spring MVC工作原理及源码解析(一) MVC原理介绍、与IOC容器整合原理
MVC原理介绍 Spring MVC原理图 上图是Spring MVC工作原理图(图片来自网上搜索),根据上图,我们可以得知Spring MVC的工作流程如下: 1.用户(客户端,即浏览器)发送请求至 ...
- react+antd 使用脚手架动态修改主题色
最近做了一个需求,后台管理系统添加一个可以动态修改ant-design主题色.查询了大多数的文章,发现基本都是抄来抄去,而且文章记录的也一点也不详细.刚刚把这个功能做完了,顺便记录一下如何去修改主题色 ...