pytest精髓__fixture
命令:fixture(scope='function',params=None,autouse=False,ids=None,name=None)
参数说明
scope:有四个级别参数函数"function"(默认),类"class",模块"module",整个测试项目"session"。
params:表示fixture的参数化功能。
1 import pytest
2 data = ['老子', '孔子', '孟子']
3
4 @pytest.fixture(params=data,ids=['user=Socrates','user=Platon','user=Aristotle'])
5 def login(request):
6 print('哲学兴起')
7 yield request.param
8 print('哲学消沉')
9
10 class Test_01:
11 def test_01(self, login):
12 print('---用例01---')
13 print('思想家:%s' % login)
14
15 if __name__ == '__main__':
16 pytest.main(['-vs'])

autouse:如果True,自动为用例使用。如果为False则需要设置来激活fixture。
1 import pytest
2 @pytest.fixture(autouse=True)
3 def login():
4 print('\n早出')
5 yield
6 print('\n晚归!')
7 class Test_Login():
8 def test_01(self):
9 print('---小兰---')
10 def test_02(self):
11 print('---任正非---')
12 if __name__ == '__main__':
13 pytest.main(['-vs'])

ids:ids表示在fixture对参数化的内容进行加上标识,比如让别人知道这个传入的参数是什么意思。
name:name参数表示对fixture的名称进行重命名。
1 import pytest
2 @pytest.fixture(name='我是冰箱')
3 def login():
4 print('\n打开冰箱')
5 yield
6 print('\n关上冰箱!')
7 class Test_Login():
8 def test_01(self, 我是冰箱):
9 print('---把大象塞进冰箱---')
10 if __name__ == '__main__':
11 pytest.main(['-vs'])

例子1 fixture调用与不调用的区别
1 import pytest
2 @pytest.fixture()
3 def login():
4 print('登录操作')
5 yield
6 print('退出登录')
7 class Test_Login():
8 def test_01(self, login):
9 print('需要用到登录!')
10 def test_02(self):
11 print('不需要登录!')
12 def test_03(self, login):
13 print('这里需要用到登录!')
14 if __name__ == '__main__':
15 pytest.main(['-vs'])

例子2 异常后依然会执行后置操作
1 import pytest
2 @pytest.fixture()
3 def login():
4 print('登录操作')
5 yield
6 print('退出登录!')
7 class Test_Login():
8 def test_01(self, login):
9 print('需要用到登录!')
10 assert 1==1
11 def test_02(self):
12 print('不需要登录!')
13 def test_03(self, login):
14 print('这里需要用到登录!')
15 assert 1==2
16 if __name__ == '__main__':
17 pytest.main(['-vs']

例子2 同时调用两个fixture
1 import pytest
2 @pytest.fixture()
3 def login():
4 print('登录操作')
5 yield
6 print('退出登录!')
7 @pytest.fixture()
8 def log():
9 print('打开日志功能!')
10 yield
11 print('关闭日志功能!')
12
13 class Test_Login():
14 def test_01(self, login, log):
15 print('需要用到登录!')
16 def test_02(self):
17 print('不需要登录!')
18 def test_03(self, log, login):
19 print('这里需要用到登录!')
20 if __name__ == '__main__':
21 pytest.main(['-vs'])

月缺不改光,剑折不改刚。有志向的人自信自强;
君子量不极,胸吞百川流。有志向的人心有远方;
丈夫非无泪,不洒离别间。有志向的人情深意长;
及时当勉励,岁月不待人。有志向的人不会虚度时光。
人生感意气,功名谁复论。有志向的人看淡名利。
感时思报国,拔剑起蒿莱。有志向的人是最可靠的力量。
愿君学长松,慎勿作桃李。
pytest精髓__fixture的更多相关文章
- pytest进阶之fixture
前言 学pytest就不得不说fixture,fixture是pytest的精髓所在,就像unittest中的setup和teardown一样,如果不学fixture那么使用pytest和使用unit ...
- pytest框架之fixture详细使用
本人之前写了一套基于unnitest框架的UI自动化框架,但是发现了pytest框架之后觉得unnitest太low,现在重头开始学pytest框架,一边学习一边记录,和大家分享,话不多说,那就先从p ...
- Pytest单元测试框架-Pytest环境安装
unittest是python自带的单元测试框架,它封装好了一些校验返回的结果方法和一些用例执行前的初始化操作,使得单元测试易于开展,因为它的易用性,很多同学也拿它来做功能测试和接口测试,只需简单开发 ...
- Pytest学习笔记3-fixture
前言 个人认为,fixture是pytest最精髓的地方,也是学习pytest必会的知识点. fixture用途 用于执行测试前后的初始化操作,比如打开浏览器.准备测试数据.清除之前的测试数据等等 用 ...
- Pytest fixture及conftest详解
前言 fixture是在测试函数运行前后,由pytest执行的外壳函数.fixture中的代码可以定制,满足多变的测试需求,包括定义传入测试中的数据集.配置测试前系统的初始状态.为批量测试提供数据源等 ...
- flask-sqlalchemy、pytest 的单元测试和事务自动回滚
flask-sqlalchemy.pytest 的单元测试和事务自动回滚 使用 flask-sqlalchemy 做数据库时,单元测试可以帮助发现一些可能意想不到的问题,像 delete-cascad ...
- 【转】 C++的精髓——虚函数
虚函数为了重载和多态的需要,在基类中是由定义的,即便定义是空,所以子类中可以重写也可以不写基类中的函数! 纯虚函数在基类中是没有定义的,必须在子类中加以实现,很像java中的接口函数! 虚函数 引入原 ...
- 大圆满的精髓–肯•威尔伯(KEN WILBER)
作者:肯·威尔伯(Ken Wilber),目前被公认为是“后人本心理学”的最重要的思想家.理论家和发言人,其影响已经跨越了心理学领域,波及哲学和神学领域.由于肯·威尔伯在意识领域的研究极富基础性和开创 ...
- Atitit. 提升软件开发效率and 开发质量---java 实现dsl 4gl 的本质and 精髓 O725
Atitit. 提升软件开发效率and 开发质量---java 实现dsl 4gl 的本质and 精髓 O725 1. DSL主要分为三类:外部DSL.内部DSL,以及语言工作台. 1 2. DSL ...
随机推荐
- ESXI系列问题整理以及记录——使用SSH为设备打VIB驱动包,同时提供一种对于ESXI不兼容螃蟹网卡(Realtek 瑞昱)的问题解决思路
对于ESXI不兼容螃蟹网卡的问题,这里建议购买一张博通的低端单口千兆网卡,先使用博通网卡完成系统部署,再按照下文方法添加螃蟹网卡的VIB驱动,最后拆除博通网卡. 螃蟹网卡VIB驱动包下载地址:http ...
- [pwn基础]动态链接原理
目录 [pwn基础]动态链接原理 动态链接概念 动态链接调用so例子 GOT(全局偏移表) got表劫持小实验 PLT(延迟绑定) PLT概念 延迟绑定(PLT表) 实战学习 [pwn基础]动态链接原 ...
- JS:函数的形参与实参
形参: 函数显式参数在函数定义时列出. 函数调用未传参时,参数会默认设置为: undefined. function fn(a,b,c){ //a,b,c为形参 //此时有一个隐式操作:var a,v ...
- 关于使用 koa路由与mysql模块, ctx.body获取不到值的问题
var Koa = require('koa');var Router = require('koa-router' );var bodyParser = require('koa-bodyparse ...
- 一题多解,ASP.NET Core应用启动初始化的N种方案[上篇]
ASP.NET Core应用本质上就是一个由中间件构成的管道,承载系统将应用承载于一个托管进程中运行起来,其核心任务就是将这个管道构建起来.在ASP.NET Core的发展历史上先后出现了三种应用承载 ...
- Collection子接口:Set接口
1.Set 存储的数据特点:无序的.不可重复的元素具体的:以HashSet为例说明: 1. 无序性:不等于随机性.存储的数据在底层数组中并非照数组索引的顺序添加,而是根据数据的哈希值决定的. 2. 不 ...
- labview从入门到出家1--第一个加法程序
概述: Labview在众多编程语言中排名靠后,显然在当今互联网,物联网时代并非主流语言.但是俗话说行行 出状元,即便不是立身于某个主流的领域,用好了依旧可以独领风骚,而且Labview对于硬件出身的 ...
- 从Wannacry到WannaRen:螣龙安科带你深度分析勒索病毒原理
从Wannacry到WannaRen:螣龙安科2020年4月7日,360CERT监测发现网络上出现一款新型勒索病毒wannaRen,该勒索病毒会加密windows系统中几乎所有的文件,并且以.Wann ...
- 自定义nginx的日志格式存储到Filebeat和Logstash
vim /etc/nginx/nginx.conf log_format main '$remote_addr - $remote_user [$time_local] ' '"$reque ...
- SpringMVC底层——请求参数处理流程描述
在DispatcherServlet.java的doDispatch方法中,springmvc通过handlermapping里面找哪个handler能处理请求,handler封装了目标方法的信息, ...