博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python单元测试框架——unittest
阅读量:4310 次
发布时间:2019-06-06

本文共 2517 字,大约阅读时间需要 8 分钟。

一、Pyhon工作原理—— 核心概念:test case, testsuite, TestLoder,TextTestRunner,TextTestResult, test fixture

TestCase(测试用例): 所有测试用例的基类,它是软件 测试中最基本的组成单元。

                   一个test case就是一个测试用例,是一个完整的测试流程,包括测试前环境的搭建setUp,执行测试代码(run),以及测试后环境的还原(tearDown)。测试用例是一个完整的测试单元,可以对某一问题进行验证。

TestSuite(测试套件):多个测试用例test case集合就是TestSuite,TestSuite可以嵌套TestSuite

TestLoder:是用来加载 TestCase到TestSuite中,其中有几个loadTestsFrom_()方法,就是从各个地方寻找TestCase,创建他们的实例,然后add到TestSuite中,再返回一个TestSuite实例

TextTestRunner:是来执行测试用例的,其中的run(test)会执行TestSuite/TestCase中的run(result)方法。

 TextTestResult:测试结果会保存到TextTestResult实例中,包括运行了多少用例,成功与失败多少等信息

TestFixture:又叫测试脚手,测试代码的运行环境,指测试准备前和执行后要做的工作,包括setUp和tearDown方法

二、测试流程:

1. 写好TestCase:一个class继承unittest.TestCase,就是一个测试测试用例,其中有多个以test开头的方法,那么 每一个这样的,在load的时候会生成一个TestCase实例。如果一个class中有四个test开头的方法,最后load到suite中时则有四个测试用例

2. 由TestLoder加载TestCase到TestSuite

3.然后由TextTestRunner来运行TestSuite,运行的结果保存在TextTestResult中。

说明:a:通过命令行或者unittest.main()执行时,main会调用TextTestRunner中的run来执行,或者可以直接通过TextTestRunner来执行用例

b:Runner执行时,默认将结果输出到控制台,我们可以设置其输出到文件,在文件中查看 结果,也可以通过HTMLTestRunner将结果输出到HTML)

三、unittest实例:

1.准备待测方法:

mathfunc.py

2. 为以上方法写测试:

这就是一个简单的测试,有几点需要说明的:

       a:在第一行给出了每一个用例执行的结果的标识,成功是 .,失败是 F,出错是 E,跳过是 S。从上面也可以看出,测试的执行跟方法的顺序没有关系,test_divide写在了第4个,但是却是第2个执行的。

        b:每个测试方法均以 test 开头,否则是不被unittest识别的。

        c:在unittest.main()中加 verbosity 参数可以控制输出的错误报告的详细程度,默认是 1,如果设为 0,则不输出每一用例的执行结果,即没有上面的结果中的第1行;如果设为 2,则输出详细的执行结果

3.组织TestSuite

        a:确定测试用例的顺序,哪个先执行哪个后执行?

         b:如果测试文件有多个,怎么进行组织?

TestLoder加载TestCase几种方法

4. 生成结果到文件:

5. test fixture——setUp(),tearDown()方法

setUp() 和 tearDown() 两个方法(其实是重写了TestCase的这两个方法),这两个方法在每个测试方法执行前以及执行后执行一次,setUp用来为测试准备环境,tearDown用来清理环境,已备之后的测试。

 

class TestMathFunc(unittest.TestCase):     # setUp 和 tearDown方法会在每个测试方法执行前及执行后执行一次,setUp用来为测试准备环境,tearDown用来清理环境已备之后的测试     def setUp(self):         print 'do something before test.prepare environment'     def tearDown(self):         print 'do something after test.clean up' 如果想要在所有case执行之前准备一次环境,并在所有case执行结束之后再清理环境,我们可以用 setUpClass() 与tearDownClass():
class TestMathFuncTwo(unittest.TestCase):     #如果想要在所有case执行之前准备一次环境,并在所有case执行结束后再清理环境,我们可以用setUpClass()与tearDownClass(),注意:@classmethod必须加,否则报错     @classmethod     def setUpClass(cls):         print 'This setUpClass() method only called once'     @classmethod     def tearDownClass(cls):         print 'This tearDownClass() method only called once too' 6. 跳过某个case

7. 用HTMLTestRunner输出HTML报告

HTMLTestRunner是一个第三方的unittest HTML报告库,首先我们下载HTMLTestRunner.py,并放到当前目录下,或者你的’C:\Python27\Lib’下,就可以导入运行了

转载于:https://www.cnblogs.com/navysummer/p/9140455.html

你可能感兴趣的文章
AFNetworking实现程序重新启动时的断点续传
查看>>
Java案例整理
查看>>
【python3基础】python3 神坑笔记
查看>>
小椛椛的板子们2
查看>>
元类的三大核心:__new__,__init__和__call__
查看>>
!!在JS中代表什么
查看>>
Oracle 中的sql函数以及分页
查看>>
Android 发送邮件时遭遇 : no object DCH for MIME type multipart/mixed
查看>>
Android 动画学习小结
查看>>
GizpAttribute
查看>>
Redis安装教程
查看>>
centos yum install redis
查看>>
DBUtils数据库连接池
查看>>
underscore.js _.each[Collections]
查看>>
if...else if switch分支结构
查看>>
前端页面卡顿?或是DOM操作惹的祸,需优化代码
查看>>
JS的节流、防抖及使用场景
查看>>
列表Liist
查看>>
ORACLE操作列
查看>>
LeetCode 136. 只出现一次的数字(Single Number)
查看>>