pytest进阶之xunit fixture
前言
今天我们再说一下pytest框架和unittest框架相同的fixture的使用, 了解unittest的同学应该知道我们在初始化环境和销毁工作时,unittest使用的是setUp,tearDown方法,那么在pytest框架中同样存在类似的方法,今天我们就来具体说明。
先附上官方文档的一段说明
1.每个级别的setup/teardown都可以多次复用
2.如果相应的初始化函数执行失败或者被跳过则不会执行teardown方法
3.在pytest4.2之前,xunit fixture 不遵循fixture的作用规则的,因此可以在一个session级别且参数auto=True的fixture前执行setup_method方法
但是到目前为止,所有的xunit fixture已经遵循了fixture执行的规则
function级别
实例
1 def setup_function(function): 2 print('\n--------------------') 3 print('函数执行前所做的操作') 4 print('\n--------------------') 5 6 def teardown_function(function): 7 print('\n--------------------') 8 print('函数执行后所做的操作') 9 print('\n--------------------') 10 11 def test_function_1(): 12 print('\n测试函数1') 13 14 def test_function_2(): 15 print('\n测试函数2') 16 17 if __name__ == '__main__': 18 import pytest 19 pytest.main(['-sq', 'functionLevel.py'])
输出结果
functionLevel.py -------------------- 函数执行前所做的操作 -------------------- 测试函数1 -------------------- 函数执行后所做的操作 -------------------- -------------------- 函数执行前所做的操作 -------------------- 测试函数2 -------------------- 函数执行后所做的操作 --------------------[100%]========================== 2 passed in 0.03 seconds ===========================
说明
通过输出结果我们可以总结:setup_function会在每一个测试函数前执行初始化操作;teardown_function会在每一个测试函数执行后执行销毁工作
method级别
实例
1 class TestMethod(object): 2 3 def setup_method(self, method): 4 print('\n--------------------') 5 print('方法执行前所做的操作') 6 print('\n--------------------') 7 8 def teardown_method(self, method): 9 print('\n--------------------') 10 print('方法执行后所做的操作') 11 print('\n--------------------') 12 13 def test_method_1(self): 14 print('\n测试方法1') 15 16 def test_method_2(self): 17 print('\n测试方法2') 18 if __name__ == '__main__': 19 import pytest 20 pytest.main(['-sq', 'methodLevel.py'])
输出结果
methodLevel.py -------------------- 方法执行前所做的操作 -------------------- 测试方法1 -------------------- 方法执行后所做的操作 -------------------- -------------------- 方法执行前所做的操作 -------------------- 测试方法2 -------------------- 方法执行后所做的操作 --------------------[100%] ========================== 2 passed in 0.03 seconds ===========================
说明
通过输出结果我们可以总结:setup_method会在每一个测试方法前执行初始化操作;teardown_method会在每一个测试方法执行后执行销毁工作,且方法级别的fixture是作用在测试类中的方法上的
class级别
实例
1 class TestClass(object): 2 3 @classmethod 4 def setup_class(cls): 5 print('\nsetup_class() for {}'.format(cls.__name__)) 6 7 @classmethod 8 def teardown_class(cls): 9 print('\nteardown_class() for {}'.format(cls.__name__)) 10 11 def test_1(self): 12 print('self.test_1()') 13 14 def test_2(self): 15 print('self.test_2()') 16 17 if __name__ == '__main__': 18 import pytest 19 pytest.main(['-sq', 'classLevel.py'])
输出结果
classLevel.py setup_class() for TestClass .self.test_1() .self.test_2() teardown_class() for TestClass[100%]========================== 2 passed in 0.06 seconds ===========================
说明
通过输出结果我们可以总结:setup_class会在测试类执行前执行一次初始化操作;teardown_class会在测试类执行后执行一次销毁工作,且class级别的fixture需要使用@classmethod装饰
module级别
实例
1 def setup_module(module): 2 print('\nsetup_module() for {}'.format(module.__name__)) 3 4 def teardown_module(module): 5 print('\nteardown_module() for {}'.format(module.__name__)) 6 7 def test_1(): 8 print('test_1()') 9 10 def test_2(): 11 print('test_2()') 12 13 class TestClass(object): 14 15 def test_3(self): 16 print('self.test_3()') 17 18 def test_4(self): 19 print('self.test_4()') 20 21 if __name__ == '__main__': 22 import pytest 23 pytest.main(['-sq', 'moduleLevel.py'])
输出结果
moduleLevel.py setup_module() for moduleLevel .test_1() .test_2() .self.test_3() .self.test_4() teardown_module() for moduleLevel[100%]========================== 4 passed in 0.04 seconds ===========================
说明
总结
setup_module会在整个测试文件也就是模块中的测试类或者测试函数,测试方法执行前执行一次初始化操作;teardown_module会在整个测试文件也就是模块中的测试类或者测试函数,方法执行后执行一次销毁工作
以上就是xunit fixture的4个级别,实际工作中该如何使用还需多练习,深入理解才能得心应手!
附上官方文档做参考虽是英文但是很详细 https://buildmedia.readthedocs.org/media/pdf/pytest/latest/pytest.pdf
最后呢,我计划后期结尾时会出个pytest框架编写的实战项目,关注我不迷路,敬请期待!
转载于:https://www.cnblogs.com/linuxchao/p/linuxchao-pytest-xunit-fixture.html
pytest进阶之xunit fixture相关推荐
- python fixture_python pytest进阶之xunit fixture详解
前言 今天我们再说一下pytest框架和unittest框架相同的fixture的使用, 了解unittest的同学应该知道我们在初始化环境和销毁工作时,unittest使用的是setUp,tearD ...
- 第九:Pytest进阶之xunit fixture
一.今天再说pytest框架和unittest框架相同的fixture的使用, 了解unittest的同学知道在初始化环境和销毁工作时,unittest使用的是setUp,tearDown方法,那么在 ...
- python fixture_python pytest进阶之fixture详解
前言 学pytest就不得不说fixture,fixture是pytest的精髓所在,就像unittest中的setup和teardown一样,如果不学fixture那么使用pytest和使用unit ...
- pytest进阶之fixture函数
fixture函数存在意义 网购优惠券 https://www.fenfaw.cn/ 与python自带的unitest测试框架中的setup.teardown类似,pytest提供了fixture函 ...
- Python测试框架pytest(05)fixture - error和failed、fixture实例化、多个fixture
Python测试框架pytest系列可以查看下列 Python测试框架pytest(01)简介.安装.快速入门_编程简单学的博客-CSDN博客 Python测试框架pytest(02)PyCharm设 ...
- Python测试框架pytest(04)fixture - 测试用例调用fixture、fixture传递测试数据
Python测试框架pytest系列可以查看下列 Python测试框架pytest(01)简介.安装.快速入门_编程简单学的博客-CSDN博客 Python测试框架pytest(02)PyCharm设 ...
- pytest测试框架(二)---fixture介绍
目录 一.fixture函数的定义 二.fixture函数的调用 三.fixture函数的返回 四.conftest.py的使用 五.使用实例 一.fixture函数的定义 把一个函数定义为fixtu ...
- 第十四:Pytest进阶之html测试报告
1.使用pytest-html插件生成测试报告 1.1.pytest是借助pytest-html插件生成测试测试报告, 不用自己编写生成报告代码. 1.2.github源码地址 https://git ...
- 第十一:Pytest进阶之conftest.py
1.实例场景:如果在编写测试用的时候,每一个测试文件里面的用例都需要先登录后才能完成后面的操作,那么们该如何实现呢?这就需要conftest.py文件的使用. 2.创建目录 ConftestFile| ...
最新文章
- 【机器学习入门到精通系列】不废话直入正题之单变量线性回归(另附单变量非线性代码)
- springboot---成员初始化顺序
- weblogic忘记console密码
- sklearn-数据预处理scale
- [论文阅读] BCNet: Bidirectional collaboration network for edge-guided salient object detection
- HDU 5980 位运算 进制转换函数 DEV C++调试失败的原因
- 购物车的简单添加与计算
- python实训报告pygame_20192418 2019-2020-2 《Python程序设计》实验4报告
- 使用函数求素数和_用母函数法处理一个数论问题的研究笔记
- TensorFlow开发者证书 中文手册
- C++虚函数及虚函数表(内存分配)简析
- 查看个人小程序的累计独立访客(UV)
- 基于java的enigma的加密程序
- C++(opencv)简单拼接两幅图像
- 团队协作常见问题分析与解决
- js打印线程id_泥瓦匠聊并发编程:线程与多线程必知必会(基础篇)
- iPhone--什么是解锁
- iOS静态库SDK制作(包含第三方静态库)
- 在Linux中开机自动运行普通用户脚本程序
- Typora收费了, 还有哪些好用的markdown工具