很久没有写关于测试的随笔了,最近有空学习、整理一下关于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. vue入门demo:用户管理3

    该入门demo是使用组件的方式实现,不涉及向后端发送请求 说明 把用户列表和添加用户拆分为两个组件,用户列表数据在父组件 获取用户列表:用户列表组件获取父组件的用户列表(父组件向子组件传值)1-1 1 ...

  2. 用configmap管理配置

    一.ConfigMap介绍管理配置: ConfigMap介绍 Secret 可以为 Pod 提供密码.Token.私钥等敏感数据:对于一些非敏感数据,比如应用的配置信息,则可以用 ConfigMap ...

  3. 2018.03.29 python-pandas transform/apply 的使用

    #一般化的groupby方法:apply df = pd.DataFrame({'data1':np.random.rand(5), 'data2':np.random.rand(5), 'key1' ...

  4. Apache hadoop namenode ha和yarn ha ---HDFS高可用性

    HDFS高可用性Hadoop HDFS 的两大问题:NameNode单点:虽然有StandbyNameNode,但是冷备方案,达不到高可用--阶段性的合并edits和fsimage,以缩短集群启动的时 ...

  5. 【Linux 应用编程】基础知识

    错误提示 Linux 提供的系统调用API,通常会在失败的时候返回 -1.如果想获取更多更详细的报错信息,需要借助全局变量 errno 和 perror 函数: #include <stdio. ...

  6. <nginx.conf> nginx设置用户权限

    问题在于,我们使用weblogic在前台系统获取其他系统的文件,然后保存在webloigc目录下,然后配置了nginx来当http服务器,这样,其他的系统可以来下载文件,但是访问的时候提示403错误, ...

  7. Discrete Mathematics and Its Applications | 1 CHAPTER The Foundations: Logic and Proofs | 1.4 Predicates and Quantifiers

    The statements that describe valid input are known as preconditions and the conditions that the outp ...

  8. 问题记录 | deepin15.10重装nvidia驱动及cuda

    问题描述: nvidia-smi也有显示,显卡驱动是在的,而且nvcc显示出来的cuda版本9.0也没错,不是9.1.不知道问题所在,索性重装全部. sudo tee /proc/acpi/bbswi ...

  9. java 中的equals()小结

    转载自http://www.cnblogs.com/jackyrong/archive/2006/08/20/481994.html Java中的equals是十分重要的,和= =要区别开来,最近在看 ...

  10. 右击main 方法运行正常,启动tomcat 后,spring boot 项目 出现参数字符串是乱码的情况

    PrintWriter out = new PrintWriter(new OutputStreamWriter(conn.getOutputStream(), "utf-8")) ...