Python Unittest - Test Fixtures 测试夹具
一、什么是测试夹具
定义单个或者多个测试所需的环境准备(setUp),以及环境清理(tearDown)。
例:连接数据库,或者创建Selenium WebDriver driver实例
二、测试夹具有什么作用。
- 为每一个测试用例提供用例测试环境准备和清理,为每一个用例提供干净的测试环境。
- 为每一组测试提供用例测试环境准备和清理,为每一组测试提供干净的测试环境。
三、Unittest 三种测试夹具的使用例子。
1、 Unittest 测试夹具 setUp/tearDown
- setUp 每个用例运行前执行
- tearDown 每个用例运行后执行
test_example_one.py
# encoding:utf8
import unittest
class TestCaseOne(unittest.TestCase):
def setUp(self):
print('---每个用例运行前执行---')
def tearDown(self):
print('---每个用例运行结束后执行---')
def test_case_one(self):
print('--- 测试用例 1 ---')
def test_case_two(self):
print('--- 测试用例 2---')
if __name__ == '__main__':
unittest.main(verbosity=2)
运行结果
test_case_one (__main__.TestCaseOne) ...
---每个用例运行前执行---
--- 测试用例 1 ---
---每个用例运行结束后执行---
ok
test_case_two (__main__.TestCaseOne) ...
---每个用例运行前执行---
--- 测试用例 2---
---每个用例运行结束后执行---
ok
2、 Unittest 测试夹具setUpClass/tearDownClass
- setUpClass 每个测试类里,执行一次,在所有用例运行前执行
- tearDownClass 每个测试类里,执行一次,在所有用例运行后执行
test_example_two.py
# encoding:utf8
import unittest
class TestCaseOne(unittest.TestCase):
@classmethod
def setUpClass(cls):
print('---每个测试类里,执行一次,在所有用例运行前执行---')
@classmethod
def tearDownClass(cls):
print('---每个测试类里,执行一次,在所有用例运行后执行---')
def test_case_one(self):
print('--- 测试用例 1 ---')
def test_case_two(self):
print('--- 测试用例 2---')
if __name__ == '__main__':
unittest.main(verbosity=2)
运行结果
---每个测试类里,执行一次,在所有用例运行前执行---
test_case_one (__main__.TestCaseOne) ... --- 测试用例 1 ---
ok
test_case_two (__main__.TestCaseOne) ... --- 测试用例 2---
ok
---每个测试类里,执行一次,在所有用例运行后执---
3、 Unittest 测试夹具setUpModule/tearDownModule
- setUpModule 每个模块里,执行一次,在所有用例运行前执行
- tearDownModule 每个模块里,执行一次,在所有用例运行后执行
test_example_three.py
# encoding:utf8
import unittest
def setUpModule():
print('--- 模块运行开始时 ,运行一次 ---')
def tearDownModule():
print('--- 模块运行结束时 ,运行一次 ---')
class TestCaseOne(unittest.TestCase):
def test_case_one(self):
print('--- 测试用例 1 ---')
def test_case_two(self):
print('--- 测试用例 2---')
class TestCaseTwo(unittest.TestCase):
def test_case_three(self):
print('--- 测试用例 3 ---')
def test_case_four(self):
print('--- 测试用例 4---')
if __name__ == '__main__':
unittest.main(verbosity=2)
运行结果
--- 模块运行开始时 ,运行一次 ---
test_case_one (__main__.TestCaseOne) ... --- 测试用例 1 ---
ok
test_case_two (__main__.TestCaseOne) ... --- 测试用例 2---
ok
test_case_four (__main__.TestCaseTwo) ... --- 测试用例 4---
ok
test_case_three (__main__.TestCaseTwo) ... --- 测试用例 3 ---
ok
--- 模块运行结束时 ,运行一次 ---
### Github 源码地址: [https://github.com/SEtester/how_to_run_test_case](https://github.com/SEtester/how_to_run_test_case)
Python Unittest - Test Fixtures 测试夹具的更多相关文章
- 从python run 和python unittest两种eclipse运行方式深入理解if __name__ == "__main__"
在写一个简单的python测试程序的时候,发现eclipse中Run as "Python run 和 Python unittest”结果不一样?为什么会不一样? 先贴一下代码段: # - ...
- 自动化测试神器 之 python unittest 断言
自动化测试的最后一步需要判断结果是否正确,而正确设置断言可以帮助判断测试用例的执行结果,从而提高自动化测试的效率,python unittest 提供了一个比较完整的断言方法.unittest框架测 ...
- 第二种方式,修改python unittest的执行顺序,使用猴子补丁
1.按照测试用例的上下顺序,而不是按方法的名称的字母顺序来执行测试用例. 之前的文章链接 python修改python unittest的运行顺序 之前写的,不是猴子补丁,而是要把Test用例的类名传 ...
- Pycharm上python unittest不执行"if __name__ == '__main__' "问题or选择非unittest run
转:http://www.cnblogs.com/csjd/p/6366535.html python unittest不执行"if __name__ == '__main__' " ...
- 简单实现接口自动化测试(基于python+unittest)
简单实现接口自动化测试(基于python+unittest) 简介 本文通过从Postman获取基本的接口测试Code简单的接口测试入手,一步步调整优化接口调用,以及增加基本的结果判断,讲解Pytho ...
- python+unittest 搭建简易的接口测试框架
主要介绍如何使用python+unittest快速搭建一个接口测试的框架 1.安装python unittest 2.新建一个python项目ApiTest 在setUp和setDown里设置一些需 ...
- Python unittest基本框架组成(1)
Python的标准库——unittest(可以实现自动化测试框架的搭建) python unittest四大组成“元件”: test fixture(测试脚手架)——测试代码的运行环境,指测试准备前和 ...
- Python+Unittest+Requests+PyMysql+HTMLReport 接口自动化框架
整体框架使用的是:Python+Unittest+Requests+PyMysql+HTMLReport 多线程并发模式 主要依赖模块 Unittest.Requests.PyMysql.HTMLR ...
- 接口自动化-python unittest+requests+HTMLrunner
从2015年毕业入行软件测试,快满4年了,之前技术分享都在百度贴吧上面,现在正式开始在博客中记录工作技术,努力成长,加油 接口测试的步骤1.组装好该接口需要的参数数据2.使用get或post附带参数数 ...
随机推荐
- uoj problem 12 猜数
题目大意 每次询问给出g,l,有\(a*b = g*l = n\),且\(a,b\)均为\(g\)的倍数.求\(a+b\)的最小值和\(a-b\)的最大值. 题解 因为\(a,b\)均为\(g\)的倍 ...
- 使用IronPython集成Python和.NET
本文由 伯乐在线 - 艾凌风 翻译,Daetalus 校稿.未经许可,禁止转载!英文出处:www.informit.com.欢迎加入翻译组. 从两个优秀的世界各取所需,更高效的复用代码.想想就醉了,. ...
- Python:生成器表达式
转于:http://www.cnblogs.com/liu-shuai/p/6098218.html 博主:刘-帅 简介: 生成器表达式并不真正的创建数字列表,而是返回一个生成器对象,此对象在每次计算 ...
- 发一个可伸缩线程池大小的python线程池。已通过测试。
发一个可伸缩线程池大小的线程池. 当任务不多时候,不开那么多线程,当任务多的时候开更多线程.当长时间没任务时候,将线程数量减小到一定数量. java的Threadpoolexcutor可以这样,py的 ...
- LAMP 1.9域名301跳转
给两个域名分主次.输入次域名跳转到主域名然后进行访问. 首先打开虚拟机配置文件. vim /usr/local/apache2/conf/extra/httpd-vhosts.conf 把这段配置添加 ...
- Java探索之旅(18)——多线程(2)
1 线程协调 目的对各线程进行控制,保证各自执行的任务有条不紊且有序并行计算.尤其是在共享资源或者数据情况下. 1.1 易变volatile cache技术虽然提高了访问数据的效率,但是有可能导致主存 ...
- Arcane Numbers 1
Vance and Shackler like playing games. One day, they are playing a game called "arcane numbers& ...
- This account is currently not available
今天在linux下切换用户发现提示This account is currently not available,说是无效用户了后来网上查了一下发现是用户的shell禁止登录了,解决方法只要开启she ...
- 将Linux 标准输出,错误输出重定向到文件
1.想要把make输出的全部信息,输出到某个文件中,最常见的办法就是: make xxx > build_output.txt 此时默认情况是没有改变2=stderr的输出方式,还是屏幕,所以, ...
- Spring入门第二十四课
Spring对JDBC的支持 直接看代码: db.properties jdbc.user=root jdbc.password=logan123 jdbc.driverClass=com.mysql ...