一、什么是测试夹具

  • 定义单个或者多个测试所需的环境准备(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 测试夹具的更多相关文章

  1. 从python run 和python unittest两种eclipse运行方式深入理解if __name__ == "__main__"

    在写一个简单的python测试程序的时候,发现eclipse中Run as "Python run 和 Python unittest”结果不一样?为什么会不一样? 先贴一下代码段: # - ...

  2. 自动化测试神器 之 python unittest 断言

    自动化测试的最后一步需要判断结果是否正确,而正确设置断言可以帮助判断测试用例的执行结果,从而提高自动化测试的效率,python unittest  提供了一个比较完整的断言方法.unittest框架测 ...

  3. 第二种方式,修改python unittest的执行顺序,使用猴子补丁

    1.按照测试用例的上下顺序,而不是按方法的名称的字母顺序来执行测试用例. 之前的文章链接 python修改python unittest的运行顺序 之前写的,不是猴子补丁,而是要把Test用例的类名传 ...

  4. Pycharm上python unittest不执行"if __name__ == '__main__' "问题or选择非unittest run

    转:http://www.cnblogs.com/csjd/p/6366535.html python unittest不执行"if __name__ == '__main__' " ...

  5. 简单实现接口自动化测试(基于python+unittest)

    简单实现接口自动化测试(基于python+unittest) 简介 本文通过从Postman获取基本的接口测试Code简单的接口测试入手,一步步调整优化接口调用,以及增加基本的结果判断,讲解Pytho ...

  6. python+unittest 搭建简易的接口测试框架

    主要介绍如何使用python+unittest快速搭建一个接口测试的框架 1.安装python  unittest 2.新建一个python项目ApiTest 在setUp和setDown里设置一些需 ...

  7. Python unittest基本框架组成(1)

    Python的标准库——unittest(可以实现自动化测试框架的搭建) python unittest四大组成“元件”: test fixture(测试脚手架)——测试代码的运行环境,指测试准备前和 ...

  8. Python+Unittest+Requests+PyMysql+HTMLReport 接口自动化框架

    整体框架使用的是:Python+Unittest+Requests+PyMysql+HTMLReport  多线程并发模式 主要依赖模块 Unittest.Requests.PyMysql.HTMLR ...

  9. 接口自动化-python unittest+requests+HTMLrunner

    从2015年毕业入行软件测试,快满4年了,之前技术分享都在百度贴吧上面,现在正式开始在博客中记录工作技术,努力成长,加油 接口测试的步骤1.组装好该接口需要的参数数据2.使用get或post附带参数数 ...

随机推荐

  1. ACM学习历程—HDU5587 Array(数学 && 二分 && 记忆化 || 数位DP)(BestCoder Round #64 (div.2) 1003)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5587 题目大意就是初始有一个1,然后每次操作都是先在序列后面添加一个0,然后把原序列添加到0后面,然后 ...

  2. Linux编程之错误代码

    头文件/usr/include/asm-generic/errno-base.h定义错误码: #ifndef _ASM_GENERIC_ERRNO_BASE_H #define _ASM_GENERI ...

  3. Operating System-Kickoff:什么是操作系统&&操作系统的核心概念

    接下来会写一系列Operating System(操作系统)的文章,今天先开个头.本文主要内容: 什么是操作系统 操作系统的核心概念 程序=数据结构+算法 一.什么是操作系统 1.1 操作系统是对硬件 ...

  4. mina中的发送延时

    由于项目需要,用到了 mina 框架进行 tcp 通讯.我是初次接触 mina,于是从 Hello world 开始学习了 mina .期间遇到了一个奇怪的发送数据的延迟问题,解决的过程是曲折的,但找 ...

  5. WPF bmp和二进制转换

    bmp转二进制: FileStream fs = File.OpenRead(filepath); //filepath文件路径 Byte[] tempBuff = new Byte[fs.Lengt ...

  6. [java] bug经验 Unable to locate Spring NamespaceHandler for XML schema namespace解决办法

    报错关键字: org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration probl ...

  7. java处理中日文字符串的乱码问题

    ——杂言:前段时间在处理音频预览问题,详见关于audiojs的研究.期间,将远端的音频下载并缓存在本地过程中,涉及到java.io.*的几个操作,发生一些乱码问题. 我以前的处理是将本地的编码转换为U ...

  8. 菜鸟攻城狮3(Holle World)

    1.创建一个HolleWorld.java文本文件 2.代码:public class HolleWorld { public static void main(String[] args) { Sy ...

  9. HTTP 400 错误 编译器错误消息: CS0016

    问题:运行程序时提示http 400错误 解决方法: 去掉勾 尝试将网页发布到本地IIS上,发现出现以下错误: 编译器错误消息: CS0016 解决编译器错误消息: CS0016:方法如下: 一般都是 ...

  10. Javax ws 01

    1 EndPoint发布服务 package com.gosaint.provider; import javax.jws.WebService; /** * @Authgor: gosaint * ...