Unittest框架的从零到壹(二)
四大重要概念
在unittest文档中有四个重要的概念:Test Case、Test Suite、Test Runner和Test Fixture。只有理解了这几个概念,才能理解单元测试的基本特征。
1.Test Case Test Case是最小的测试单元,用于检查特定输入集合的特定返回值。unittest提供了TestCase基类,我们创建的测试类需要继承该基类,它可以用来创建新的测试用例。
2.Test Suite测试套件是测试用例、测试套件或两者的集合,用于组装一组要运行的测试。unittest提供了TestSuite类来创建测试套件。
3.Test Runner Test Runner是一个组件,用于协调测试的执行并向用户提供结果。Test Runner可以使用图形界面、文本界面或返回特殊值来展示执行测试的结果。unittest提供了TextTestRunner类运行测试用例,为了生成HTML格式的测试报告,后面会选择使用HTMLTestRunner运行类。
4.Test Fixture
Test Fixture代表执行一个或多个测试所需的环境准备,以及关联的清理动作。例如,创建临时或代理数据库、目录,或启动服务器进程。unittest中提供了setUp()/tearDown()、setUpClass()/tearDownClass()等方法来完成这些操作。
在理解了上面几个概念之后,我们对前面的测试用例做如下修改。(这里指的是该系列的上一篇文章)
import unittest
from calculator import Calculator
class TestCalculator(unittest.TestCase):
def setUp(self): #Test Fixture-每条用例开始执行前,执行该方法
print("开始执行测试")
def tearDown(self): #Test Fixture-每条用例结束执行后,执行该方法
print("执行测试结束")
def test_add(self):
c = Calculator(1, 2)
result = c.add()
self.assertEqual(result, 3)
def test_sub(self):
c = Calculator(5, 1)
result = c.sub()
self.assertEqual(result, 4)
def test_mul(self):
c = Calculator(5, 1)
result = c.mul()
self.assertEqual(result, 6)
def test_div(self):
c = Calculator(6, 2)
result = c.div()
self.assertEqual(result, 3)
if __name__ == '__main__':
#创建测试套件TestSuite
suit = unittest.TestSuite()
suit.addTest(TestCalculator("test_add"))
suit.addTest(TestCalculator("test_sub"))
suit.addTest(TestCalculator("test_mul"))
suit.addTest(TestCalculator("test_div"))
#创建测试运行期TestRunner
runner = unittest.TextTestRunner()
runner.run(suit)
这里需要特别说明的就是,抛弃了unittest提供的main()方法,而是调用TestSuite类下面的addTest()来添加测试用例。再将Testsuite放入TestRunner里面进行启动。
这里做一个形象的比喻,TestRunner相当于枪的扳机,Testsuite相当于枪的弹夹,每一个TestCase(测试方法)就相当于子弹,而TestFixtrue则是开枪前和开枪后的动作。每执行一次测试方法都是射出了一发子弹
Unittest框架的从零到壹(二)的更多相关文章
- Unittest框架的从零到壹(一)
前言 Python中有非常多的单元测试框架,如unittest.pytest.nose.doctest等,Python2.1及其以后的版本已经将unittest作为一个标准模块放入Python开发包中 ...
- Python+Selenium+Unittest框架使用——Selenium——定位元素(二)
1.定位元素(id.name.class.link.partial link) (1)find_element_by_id() 用百度定位测试,用firebug查看定位元素 ,输入框的id为“kw”, ...
- selenium + python自动化测试unittest框架学习(二)
1.unittest单元测试框架文件结构 unittest是python单元测试框架之一,unittest测试框架的主要文件结构: File >report >all_case.py &g ...
- gitbook 入门教程之从零到壹发布自己的插件
什么是插件 Gitbook 插件是扩展 Gitbook 功能的最佳方式,如果 Gitbook 没有想要的功能或者说网络上也没有现成的解决方案时,那么只剩下自食其力这条道路,让我们一起来自力更生开发插件 ...
- Unittest框架+ddt数据驱动+HTMLTestRunner+sendmail(自动发送测试报告)+git+Jenkins
本次写的是针对有代码基础的,没基础建议先去学基础,以下所有描述内容都是我已经在公司项目实践成功的!仅供参考 整体思路: 1.接口自动化用的是Python中unittest框架 2.所有的测试数据用例存 ...
- Unittest框架小结
在日常的自动化测试过程中,Python里有一个自带的单元测试框架是unittest模块,简单易用,这里简单介绍下其主要的用法. Unittest测试框架主要包含四个部分 TestCase 也就是测试用 ...
- selenium自动化测试、Python单元测试unittest框架以及测试报告和日志输出
部分内容来自:https://www.cnblogs.com/klb561/p/8858122.html 一.基础介绍 核心概念:test case, testsuite, TestLoder,Tex ...
- pycharm中脚本执行的3种模式(unittest框架、pytest框架、普通模式)
背景知识,某次使用HTMLTestRunner的时候,发现一直都无法导出报告,后来查询资料发现了一些坑,现在整理一下来龙去脉. 一:pycharm默认的是pytest框架去执行unittest框架的测 ...
- Python接口测试之unittest框架(五)
Test-driven development(TDD)开发模式在今天已经不是什么新奇的事了,它的开发思维是在开发一个产品功能的时候,先 编写好该功能的测试代码,在编写开发比如,比如要写二个数相除的函 ...
随机推荐
- Azure DevOps 替换 appsettings 解决方案
之前发布了 <.Net Core DevOps -免费用Azure四步实现自动化发布(CI/CD)>之后,有很多朋友私信我说如何替换 appsettings 里面的 ConnectionS ...
- python3 requests_html 爬取智联招聘数据(简易版)
PS重点:我回来了-----我回来了-----我回来了 1. 基础需要: python3 基础 html5 CS3 基础 2.库的选择: 原始库 urllib2 (这个库早些年的用过,后来淡忘了) ...
- 【java基础】- java双亲委派机制
在了解双亲委派机制之前,你应当知道classloader(如果不了解,可以现在去恶补一下哈) 四种classloader 虚拟机自带 引导类加载器(Bootstrap ClassLoader) 扩展类 ...
- Leetcode Tags(5)Hash Table
一.500. Keyboard Row 给定一个单词列表,只返回可以使用在键盘同一行的字母打印出来的单词. 输入: ["Hello", "Alaska", &q ...
- Java多线程编程(一)Java多线程技能
一.进程和多线程的概念以及线程的优点 打开Windo任务管理器可以看到很多正在运行着的exe程序,完全可以将运行在内存中的exe文件理解成进程,进程是受操作系统管理的基本运行单元. 线程可以理解成在进 ...
- requests+lxml+xpath爬取电影天堂
1.导入相应的包 import requests from lxml import etree 2.原始ur url="https://www.dytt8.net/html/gndy/dyz ...
- deepin15.5 安装tensorflow-gpu
deepin的CUDA和cuDNN安装方法与其它系统有所不同,参考其它操作系统的方法也许不适用,特别是显卡驱动的安装,容易使系统出现问题 本次配置: 操作系统:deepin15.5桌面版 电脑品牌:联 ...
- C#开发命令执行驱动程序 之 读入命令行参数
/// <summary> /// 在cmd窗体内执行如下: /// OrderDriverApp.exe Order Driver App /// 返回: /// The args ar ...
- phpstorm 2016.2.2 激活
2016年7月14日 phpstorm 推送2016.2 更新 2016年10月25日phpstorm 推送2016.2.2 更新 2016年11月24日phpstorm 推送2016.3 更新 下面 ...
- npm start 的应用 改为forever 后台启动的方法记录
记录日志的启动方式 forever start -l forever.log -o out.log -e err.log app.js 记录日志的启动方式 forever start -a app.j ...