[ 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...
最新文章
- CSS的未来
- MongoDB aggregate 运用篇
- 分享一个UI与业务逻辑分层的框架(二)
- JJ Ying:越来越跨界的界面设计
- mybatis 如何查找表里的某一个字段,然后返回它们的结果集list ?
- WP8.1 添加启动画面
- Uploadify 3.2 参数属性、事件、方法函数详解
- 1319-n皇后问题
- java学习笔记(3):java的工作原理及相关基础
- Git操作流水账
- css 相关
- JMeter 连接数据库报错No suitable driver found for jdbc:xxxxxxxxx
- KiCad 一款强大的 BOM 和 装配图生成插件
- laravel 5.4 fopen(): Filename cannot be empty
- zookeeper视图工具
- [视频播放] M3U8文件格式说明
- CSS图标文字不对齐
- 自动化部署-Jenkins+SVN+MSBuild
- Linux排查Java程序占用CPU很高的解决办法
- dns欺骗之ettercap
热门文章
- 1、Redis简介
- Linux core 文件浅析
- 第46篇-signature_handler与result_handler
- SQL获取当天0点0分0秒和23点59分59秒方法
- sar命令查看网卡流量 (System ActivityReporter系统活动情况报告)
- 网站高可用架构之BASE原理
- maven打包 运行出现 错误: 找不到或无法加载主类 jar
- JAVAWEB使用FreeMarker利用ftl把含有图片的word模板生成word文档,然后打包成压缩包进行下载
- java源码——计算立体图形的表面积和体积
- 【LeetCode】35. Search Insert Position 解题报告(Java & Python)