很久没有写关于测试的随笔了,最近有空学习、整理一下关于unittest框架的知识。

unittest单元测试框架,不仅可以适用于单元测试,还可以适用WEB自动化测试用例的开发与执行。

unittest常见的几个属性

unittest重要并且常用的属性:TestCase、TestSuite、TextTestRunner、TestFixture、TestLoader、main

unittest.TestCase:TestCase类,所有测试用例的继承的基本类。一个测试用例就是一个完整的测试流程,包括测试用例执行前的环境准备日(setUp),实现测试过程的代码(run),以及用例之后后的环境还原(tearDown)。一个测试用例就是一个完整的测试单元,通过运行这个测试单元,可以对某一个功能进行验证。

图中可以看到我使用的是setUpClass和tearDownClass方法,而不是setUp和tearDown。他们的区别setUp和tearDown是在每一个用例执行前后都会执行一次,setUpClass和tearDownClass方法只在本类所有用例执行之前执行一次和所有用例执行完成之后执行一次,并且如图必须加上@classmethod进行修饰

unittest.main():用他可以方便的讲一个单元测试模块变为可直接运行的测试脚本,main()方法使用TestLoader类来搜索所有包含在该类中以test命名开头的测试方法,并执行他们。执行方法的默认顺序是:根据ASCII码的顺序加载测试用例,数字与字母的顺序为0-9,A-Z,a-z。所以以A开头的用例会比以a开头的用例优先执行。

如上图一般在用例最后会加上这段代码, 运行unittest.main()的时候,就会使用TestLoader类去搜索本类里面所有已test开头的用例来执行。

unittest.TestSuite():创建测试套件,就是多个测试用例集合在一起,而且TestSuite也可以嵌套TestSuite。testSuite()可以被看做是一个容器,通过addTest可以向测试套件里面增加用例

说明:

addTest(): addTest()方法是将测试用例添加到测试套件中,如下方,是将test_baidu模块下的BaiduTest类下的test_baidu测试用例添加到测试套件。

suite = unittest.TestSuite()
suite.addTest(test_baidu.BaiduTest('test_baidu'))

unittest.defaultTestLoader():defaultTestLoader()类,通过该类下面的discover()方法可自动更具测试目录start_dir匹配查找测试用例文件(test*.py),并将查找到的测试用例组装到测试套件,因此可以直接通过run()方法执行discover。用法如下:

注意:上图我用的方式是HTMLTestRunner类是因为我需要执行完用例之后自动生成测试报告。

unittest.TextTextRunner():run()方法来执行suite(TestSuite/TestCase)所组装的用例套件,入参为suite测试套件,测试结果会保存到TextTestResult实例中。

unittest.TestLoader:加载TestCase到TestSuite中的,其中loadTestsFrom__()方法用于寻找TestCase,并创建它们的实例,然后添加到TestSuite中,返回TestSuite实例。

unittest.Fixture:一个测试用例的初始化准备及环境还原,主要是setUp() 和 setDown()方法;

总结:

1.TextTestRunner.run(TestSuite)方法执行的是TestSuite套件

2.DefultTestLoader.discover()是生成套件所以用run()方法执行

3.TestLoder也是将TestCase加载到TestSuite测试套件里面

3.main()方法是调用了TestLoader方法,那么也将生成测试套件,也是用run()方法执行用例

unittest----常用属性详解(框架属性详解)的更多相关文章

  1. css 12-CSS3属性详解:动画详解

    12-CSS3属性详解:动画详解 #前言 本文主要内容: 过渡:transition 2D 转换 transform 3D 转换 transform 动画:animation #过渡:transiti ...

  2. css 13-CSS3属性:Flex布局图文详解

    13-CSS3属性:Flex布局图文详解 #前言 CSS3中的 flex 属性,在布局方面做了非常大的改进,使得我们对多个元素之间的布局排列变得十分灵活,适应性非常强.其强大的伸缩性和自适应性,在网页 ...

  3. 详解Android属性动画

    前面我们讲到的属性动画都是使用代码的定义方式:Android属性动画之ValueAnimator和Android属性动画之ObjectAnimator和AnimatorSet,下面我们再来看看使用XM ...

  4. 【配置属性】—Entity Framework实例详解

    Entity Framework Code First的默认行为是使用一系列约定将POCO类映射到表.然而,有时候,不能也不想遵循这些约定,那就需要重写它们.重写默认约定有两种方式:Data Anno ...

  5. 转: javascript模块加载框架seajs详解

    javascript模块加载框架seajs详解 SeaJS是一个遵循commonJS规范的javascript模块加载框架,可以实现javascript的模块化开发和模块化加载(模块可按需加载或全部加 ...

  6. 常用开发库 - MapStruct工具库详解

    常用开发库 - MapStruct工具库详解 MapStruct是一款非常实用Java工具,主要用于解决对象之间的拷贝问题,比如PO/DTO/VO/QueryParam之间的转换问题.区别于BeanU ...

  7. Hadoop 新 MapReduce 框架 Yarn 详解

    Hadoop 新 MapReduce 框架 Yarn 详解: http://www.ibm.com/developerworks/cn/opensource/os-cn-hadoop-yarn/ Ap ...

  8. 测试框架mochajs详解

    测试框架mochajs详解 章节目录 关于单元测试的想法 mocha单元测试框架简介 安装mocha 一个简单的例子 mocha支持的断言模块 同步代码测试 异步代码测试 promise代码测试 不建 ...

  9. 【python3+request】python3+requests接口自动化测试框架实例详解教程

    转自:https://my.oschina.net/u/3041656/blog/820023 [python3+request]python3+requests接口自动化测试框架实例详解教程 前段时 ...

  10. python+requests接口自动化测试框架实例详解

    python+requests接口自动化测试框架实例详解   转自https://my.oschina.net/u/3041656/blog/820023 摘要: python + requests实 ...

随机推荐

  1. Go开发[八]goroutine和channel

    进程和线程 进程是程序在操作系统中的一次执行过程,系统进行资源分配和调度的一个独立单位. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位. 一个进程可以创 ...

  2. VS调试异常代码 HRESULT:0x80070057 (E_INVALIDARG)解决方法

    我目前在做的一个系统是VS2010写的的B/S架构程序, 主要技术是:C#.SQLSERVER2008.NHibernate,Python,Nhibernate 的*.hbn.xml是映射数据库的表结 ...

  3. proteus 与 keil 的安装及联调

    proteus 安装 Win10 系统的下载链接可以参考这里:https://tieba.baidu.com/p/5644915130?traceid= 百度网盘地址 链接1: http://pan. ...

  4. aiXcoder安装&使用

    1.官网下载 https://www.aixcoder.com/#/setting 1.1介绍 1.2选择对应的下载版本 1.3安装&注册(需关闭IDEA) 安装完进行手机/邮箱注册,下载对应 ...

  5. Alert弹出框处理

    selenium的API提供了Alert类对alert弹出框的处理的方法,涉及到的方法有text,dismiss(),accept()和send_keys(),在javascript中主要有alert ...

  6. R-CNN, Fast R-CNN, Faster R-CNN, Mask R-CNN

    最近在看 Mask R-CNN, 这个分割算法是基于 Faster R-CNN 的,决定看一下这个 R-CNN 系列论文,好好理一下 R-CNN 2014 1. 论文 Rich feature hie ...

  7. python每日一练:0011题

    第 0011 题: 敏感词文本文件 filtered_words.txt,里面的内容为以下内容,当用户输入敏感词语时,则打印出 Freedom,否则打印出 Human Rights. 北京 程序员 公 ...

  8. Golang中log与fmt区别

    关于使用log与使用fmt的区别 最初的就是直接打印出来,之后一点点升级,比如加上输出的时间,加上goroutine之间的并发操作(打印信息并不能一定按照你规定好的顺序输出来 每次输出的顺序可能会不同 ...

  9. return语句

    定义一个函数:可以定义一个由自己想要功能的函数,以下是简单的规则: (1).函数代码块以 def 关键词开头,后接函数标识符名称和圆括号(). (2).任何传入参数和自变量必须放在圆括号中间.圆括号之 ...

  10. java http请求工具整理

    处理了http 的get和post的请求,分别支持同步处理,异步处理两种方式下见代码. @Slf4jpublic class HttpUtils { /** * 同步请求http请求 不推荐 * * ...