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的更多相关文章

  1. pytest_前置后置

    今天总结下pytest,pytest简直就是python自动化中的高富帅,各种操作,哈哈 这次总结主要涉及到了以下几点: 1.unittest中的setUp.tearDown.setUpClass.t ...

  2. spring 切面 前置后置通知 环绕通知demo

    环绕通知: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http:// ...

  3. AOP 环绕通知 集成了前置 后置 返回通知等功能

    AOP 环绕通知 集成了前置 后置 返回通知等功能

  4. Spring Bean前置后置处理器的使用

    Spirng中BeanPostProcessor和InstantiationAwareBeanPostProcessorAdapter两个接口都可以实现对bean前置后置处理的效果,那这次先讲解一下B ...

  5. C: printf参数执行顺序与前置后置自增自减的影响

    起源: 今天在了解副作用side-effect的过程中,看到了下面的网页,把我带到了由printf引起的一系列问题,纠结了一整天,勉强弄懂. 第一个代码没什么好解释的.而第二个printf(" ...

  6. Spring -- aop(面向切面编程),前置&后置&环绕&抛异常通知,引入通知,自动代理

    1.概要 aop:面向方面编程.不改变源代码,还为类增加新的功能.(代理) 切面:实现的交叉功能. 通知:切面的实际实现(通知要做什么,怎么做). 连接点:应用程序执行过程期间,可以插入切面的地点. ...

  7. android实现前置后置摄像头相互切换

    首先自定义一个继承自SurfaceView并且实现了SurfaceHolder.Callback接口的组件: public class CameraView extends SurfaceView i ...

  8. thinkphp5使用前置后置操作

    下面举个例子,前置删除的例子   模型事件只可以在调用模型的方法才能生效,使用查询构造器通过Db类操作是无效的   控制器中实例化类   $cate=model('cate'); $cate-> ...

  9. vue路由导航守卫及前置后置钩子函数参数详解

    首先构建一个测试demo如下图: 接着来探讨路由配置界面 import Vue from 'vue' import Router from 'vue-router' // import HelloWo ...

随机推荐

  1. Spring Boot 轻量替代框架 Solon 1.3.29 发布

    Solon 是一个微型的Java开发框架.项目2018年启动,参考过大量前人作品:内核0.1m的身材,超高的跑分,以及良好的使用体验.支持:RPC.REST API.MVC.WebSocket.Soc ...

  2. 1087 All Roads Lead to Rome

    Indeed there are many different tourist routes from our city to Rome. You are supposed to find your ...

  3. 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 --- ...

  4. hdu4530 水题

    题意: 小Q系列故事--大笨钟 Time Limit: 600/200 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Total ...

  5. 从苏宁电器到卡巴斯基第29篇:难忘的三年硕士时光 VII

    我们可能无家可归 那天晚上和导师道别后,我们几个还聚在一起开了一个小会.当时大家觉得最坏的情况就是学院不肯让步,不能满足我们导师提出的条件.那么这样的话,我们几个只能够重新找导师了.而我们数媒专业里面 ...

  6. hdu4411 经典费用里建图

    题意:       给以一个无向图,0 - n,警察在0,他们有k个警队,要派一些警队去1--n个城市抓小偷, 问所有吧所有小偷全抓到然后在返回0的最小路径和是多少,当地i个城市被攻击的时候他会通知i ...

  7. POJ 3613 快速幂+Floyd变形(求限制k条路径的最短路)

    题意:       给你一个无向图,然后给了一个起点s和终点e,然后问从s到e的最短路是多少,中途有一个限制,那就是必须走k条边,路径可以反复走. 思路:       感觉很赞的一个题目,据说证明是什 ...

  8. Linux中数据库的安装和配置(MySQL与Maria DB)

    目录 MySQL和Maria DB的介绍 MySQL和Maria DB的安装 yum源安装MySQL(Centos6.5+Mysql5.1) 源码包安装MySQL yum源安装Maria DB 源码包 ...

  9. Spring MVC工作原理及源码解析(一) MVC原理介绍、与IOC容器整合原理

    MVC原理介绍 Spring MVC原理图 上图是Spring MVC工作原理图(图片来自网上搜索),根据上图,我们可以得知Spring MVC的工作流程如下: 1.用户(客户端,即浏览器)发送请求至 ...

  10. react+antd 使用脚手架动态修改主题色

    最近做了一个需求,后台管理系统添加一个可以动态修改ant-design主题色.查询了大多数的文章,发现基本都是抄来抄去,而且文章记录的也一点也不详细.刚刚把这个功能做完了,顺便记录一下如何去修改主题色 ...