博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python单元测试框架之pytest 3 -- fixtures
阅读量:5276 次
发布时间:2019-06-14

本文共 2937 字,大约阅读时间需要 9 分钟。

From: https://www.cnblogs.com/fnng/p/4769020.html

2015-08-29 13:05 by 虫师, 10695 阅读, 0 评论, ,

  fixtures不太好翻译,可看作是夹心饼干最外层的两片饼干。通常用setup/teardown来表示。它主要用来包裹测试用例,为什么需要这样的饼干呢?我们以web自动化测试为例,例如,要测试的某系统需要登录/退出。那么每一条用例执行前都需要登录,执行完又都需要退出,这样每条用例重复编写登录和退出就很麻烦,当然,你也可以把登录和退出封装为方法调用,但是每个用例中都写调用也很麻烦。有了fixtures就变得简便很多。

 

 

测试函数                                                                

创建test_fixtures.py文件

#coding=utf-8import pytest# 功能函数 def multiply(a,b): return a * b # =====fixtures======== def setup_module(module): print ("\n") print ("setup_module================>") def teardown_module(module): print ("teardown_module=============>") def setup_function(function): print ("setup_function------>") def teardown_function(function): print ("teardown_function--->") # =====测试用例======== def test_numbers_3_4(): print 'test_numbers_3_4' assert multiply(3,4) == 12 def test_strings_a_3(): print 'test_strings_a_3' assert multiply('a',3) == 'aaa' if __name__ == '__main__': pytest.main("-s test_fixtures.py")

 

运行结果:

============================= test session starts =============================platform win32 -- Python 2.7.10 -- py-1.4.30 -- pytest-2.7.2rootdir: D:\pyse\pytest, inifile: plugins: htmlcollected 2 itemstest_fixtures.py setup_module================>setup_function------> test_numbers_3_4 .teardown_function---> setup_function------> test_strings_a_3 .teardown_function---> teardown_module=============> ========================== 2 passed in 0.01 seconds ===========================

通过执行结果,相信就很容易弄清楚它们的执行顺序。

setup_module/teardown_module      在所有测试用例执行之后和之后执行。

setup_function/teardown_function    在每个测试用例之后和之后执行。

 

 

测试类                              

 

#coding=utf-8import pytest# 功能函数 def multiply(a,b): return a * b class TestUM: # =====fixtures======== def setup(self): print ("setup----->") def teardown(self): print ("teardown-->") def setup_class(cls): print ("\n") print ("setup_class=========>") def teardown_class(cls): print ("teardown_class=========>") def setup_method(self, method): print ("setup_method----->>") def teardown_method(self, method): print ("teardown_method-->>") # =====测试用例======== def test_numbers_5_6(self): print 'test_numbers_5_6' assert multiply(5,6) == 30 def test_strings_b_2(self): print 'test_strings_b_2' assert multiply('b',2) == 'bb' if __name__ == '__main__': pytest.main("-s test_fixtures.py")

 

运行结果:

============================= test session starts =============================platform win32 -- Python 2.7.10 -- py-1.4.30 -- pytest-2.7.2rootdir: D:\pyse\pytest, inifile: plugins: htmlcollected 2 itemstest_fixtures.py setup_class=========>setup_method----->> setup-----> test_numbers_5_6 .teardown--> teardown_method-->> setup_method----->> setup-----> test_strings_b_2 .teardown--> teardown_method-->> teardown_class=========> ========================== 2 passed in 0.00 seconds ===========================

 

setup_class/teardown_class  在当前测试类的开始与结束执行。

setup/treadown                   在每个测试方法开始与结束执行。

setup_method/teardown_method     在每个测试方法开始与结束执行,与setup/treadown级别相同。

转载于:https://www.cnblogs.com/Raul2018/p/9760046.html

你可能感兴趣的文章
ajax的使用
查看>>
437.Path Sum III(递归!important!)
查看>>
jQuery找兄弟系列next(),nextAll(),nextUntil(),prev(),prevAll(),prevUntil(),siblings()
查看>>
IntelliJ IDEA的配置优化
查看>>
Day 1 用户交互
查看>>
P1903 [国家集训队]数颜色 / 维护队列
查看>>
【0805作业】模拟多人爬山
查看>>
window.setTimeout() 和 window.setInterval() 使用说明
查看>>
大数据组件
查看>>
ActionResult的其它返回值
查看>>
Mac零散小技巧
查看>>
#135. 二维树状数组 3:区间修改,区间查询
查看>>
Python--day6
查看>>
UML类图关系(泛化 、继承、实现、依赖、关联、聚合、组合)
查看>>
第六天
查看>>
js 格式化带时区的日期
查看>>
CSS中隐藏内容的3种方法及属性值
查看>>
每天一个linux命令(1):ls命令
查看>>
根据xml生成相应的对象类
查看>>
查看ASP.NET : ViewState
查看>>