[ unittest ] 文档粗读
参考:
https://blog.csdn.net/ljl6158999/article/details/80994979
1.概念提出
unittest最初灵感来自于Junit,它有着和其他单元测试语言类似的风格。unittest支持测试自动化,共享测试的setup和shutdown代码,将测试聚合到集合中,并且独立于报告框架。
1.unittest 有着全局方法:setup和shutdown 2.多个 testcase 组成 testsuite 3.unittest 测试和报告是独立的
接下来,让我们从面向对象的角度来了解unittest的一些重要概念,
1.test fixture
test fixture 表示要准备跑一个或者多个测试用例了,或者做结束后相关的清理工作。
比如:创建临时/代理数据库,目录或者启动一个服务进程
2.test case
测试中的最小单元,它会对输入的内容进行bug检查。我们通过继承TestCase基类来生成 test case
3.test suite
多个 testcase 组成 testsuite,test suite用于把测试用例聚合在一起并执行它们。
4.test runner
test runner是一个组件,第一个作用是组织测试用例,第二是给用户提供测试结果。
测试结果可能是一个物理接口、一个文本接口,或者返回一个特殊值。。
2.Base example
import unittest
class TestStringMethods(unittest.TestCase):
def test_upper(self):
self.assertEqual('foo'.upper(), 'FOO')
def test_isupper(self):
self.assertTrue('FOO'.isupper())
self.assertFalse('Foo'.isupper())
def test_split(self):
s = 'hello world'
self.assertEqual(s.split(), ['hello', 'world'])
# check that s.split fails when the separator is not a string
with self.assertRaises(TypeError):
s.split(2)
if __name__ == '__main__':
unittest.main()
1. 要创建一个testcase,就写一个类来继承unittest.TestCase。例子中定义了三个方法test_upper()、test_isupper()、test_split(),它们都是最小测试单元,这些测试单元在一起组成了测试用例。要注意它们的名字都要求是以 test 开头
2. assertEqual() :我们用这个方法来检查期望的结果,通过实际值和期望值进行对比。
assertTrue() 、assetFalse():检查一个条件表达式,通过表达式的True或False来判断。
assertRaises():验证是否引发了一个指定的异常。引发了异常则通过,否则失败,如例子所示 s.split(2)引发了一个类型错误,我们要的就是验证出现了这个错误,所以case通过!
3. setUp()、tearDown():允许你在每个测试方法(最小测试单元)之前或之后做点事情。一般是初始化和收尾的清理工作。
4. unittest.main():提供命令行接口去执行测试用例。在命令行运行该py文件后,会返回测试结果报告。
3.命令行
...
...
4.Test Discovery
为了兼容 test discovery,所有的测试文件必须是从项目顶级目录中导入的模块或包。
test discovery继承自TestLoader.discover(),也可以在命令行中使用哦。基本使用方法:
cd project_directory
python -m unittest discover
Q: 那么这个Test Discovery是干什么的呢?
从开始目录递归搜索测试模块,返回值是包含这些测试测试模块的TestSuite对象。
Q:什么叫做从项目顶级目录中导入的模块或包?
不知道。。。
5.Organizing test code
Continue...
[ unittest ] 文档粗读的更多相关文章
- CsvHelper文档-2读
CsvHelper文档-2读 这个库默认不需要做任何设置就可以很容易的使用它.如果你的类属性名称直接匹配csv的标题名称,那么可以按照下面的实例来用: (以下所有的代码都需要引用using csvhe ...
- 官方文档粗读 - Tutorial
参考: https://www.jianshu.com/p/0d234e14b5d3 1.Connecting 我们通过 create_engine() 来链接数据库,假设我们我们采用SQLite. ...
- Grails 1.2参考文档速读(10):Controller
转载:http://keyvalue.blog.51cto.com/1475446/303260 从本篇起,我们将开始进入Grails的Web层,首先让我们从Controller说起. G ...
- XML文档的读、写
代码: XmlDocument doc = new XmlDocument(); doc.Load("Books.xml"); //1.加载要读取的XML文件 //要想看到数据得先 ...
- [daily][troubleshoot][archlinux][wps][font] wps文档中的图内容无法显示中文
序 用linux作为工作生产环境的几个需要解决的问题之一是:文档协作,即如何兼容Micro$oft Office格式的文档. 我一般的工作方式是:在linux下创建一个win7的虚拟机,安装常用的wi ...
- ElasticSearch权威指南学习(分布式文档存储)
路由文档到分片 当你索引一个文档,它被存储在单独一个主分片上.Elasticsearch是如何知道文档属于哪个分片的呢?当你创建一个新文档,它是如何知道是应该存储在分片1还是分片2上的呢? 进程不能是 ...
- pdf及word文档的读取 pyPDF2,docx
#!python3 #-*- coding:utf8 -*- #PyPDF2可能会打不开某些pdf文档,也不能提取图片,图表或者其他媒介从PDF文件中.但是它能提取文本从PDF中,转化为字符. imp ...
- Linux常用文档操作命令--1
1.查看目录下的文档 a) ls(list):查看目录下的所有文档或者文档的信息. 命令行:ls [-a][-A] [-f][-F][-h][-l][-r][-R][-S][-t] 目录名称 //注 ...
- 使用ABAP编程实现对微软Office Word文档的操作
SAP ABAP里提供了一个标准的类CL_DOCX_DOCUMENT,提供了本地以".docx"结尾的微软Office word文档的读和写操作. 本文介绍了ABAP类CL_DOC ...
随机推荐
- shell脚本 awk实现查看ip连接数
一.简介 处理文本,是awk的强项了. 无论性能已经速度都是让人惊叹! 二.使用 适用:centos6+ 语言:英文 注意:无 awk 'BEGIN{ while("netstat -an& ...
- UCI数据库_鸢尾花数据集的读取方式
1. 读取数据的第一种方式 [attrib1,attrib2,attrib3,attrb4,class] = textread('iris.data','%f%f%f%f%s','delimiter' ...
- YC-Framework版本更新:V1.0.3
分布式微服务框架:YC-Framework版本更新V1.0.3!!! 本次版本V1.0.3更新 集成分布式事务Seata: 集成分布式事务Tx-LCN: 集成Kafka: 集成RocketMQ: 集成 ...
- 微前端框架 qiankun 技术分析
我们在single-spa 技术分析 基本实现了一个微前端框架需要具备的各种功能,但是又实现的不够彻底,遗留了很多问题需要解决.虽然官方提供了很多样例和最佳实践,但是总显得过于单薄,总给人一种&quo ...
- 30个类手写Spring核心原理之动态数据源切换(8)
本文节选自<Spring 5核心原理> 阅读本文之前,请先阅读以下内容: 30个类手写Spring核心原理之自定义ORM(上)(6) 30个类手写Spring核心原理之自定义ORM(下)( ...
- java 编程基础 类加载器
什么是类加载器 类加载器负责将class文件(可能在磁盘上,也可能在网络上)加载到内存中,并为之生成对应的java.lang.Class对象.Java开发中无须过分关心类加载机制,但所有的编程人员都应 ...
- 我写了个IDEA开源插件,vo2dto 一键生成对象转换
让人头疼的对象转换 头炸,po2vo.vo2do.do2dto,一堆对象属性,取出来塞进来.要不是为了 DDD 架构下的各个分层防腐,真想一竿子怼下去. 那上 BeanUtils.copyProper ...
- 【九度OJ】题目1015:还是A+B 解题报告
[九度OJ]题目1015:还是A+B 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1015 题目描述: 读入两个小于10000的正整 ...
- 【LeetCode】1046. Last Stone Weight 解题报告(Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 大根堆 日期 题目地址:https://leetco ...
- 【LeetCode】961. N-Repeated Element in Size 2N Array 解题报告(Python & C+++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 字典 日期 题目地址:https://leetcod ...