一天一个关于测试知识点,5分钟内讲解你最关心的软件测试问题,今天就来谈谈关于软件测试中的“Unittest—测试分析、断言、运行及报告”。
一、unittest的测试覆盖率分析
利用coverage工具可以分析单元测试的覆盖率,首先通过pip3命令下载coverage。
C:\python\unittest>pip3 install coverage
下载完毕,代开命令行编辑窗口,通过cd命令进入被测对象所在的目录,然后运行。
C:\python\unittest>coverage run Calculatortest.py
这里Calculatortest.py为被测程序文件,测试程序将被执行。执行完毕,运行如下命令,就可以看到测试覆盖报告了。
C:\python\unittest>coverage report -m
C:\python\unittest>coverage report -m
Name Stmts Miss Cover Missing
-------------------------------------------------
Calculator.py 17 0 100%
CalculatorTest.py 44 0 100%
-------------------------------------------------
TOTAL 61 0 100%
二、unittest的断言
关于unittest的断言,参见表2-4所示。
表2-4 unittest的断言
三、unittest批量运行及报告产生
同JUnit一样,unittest也可以进行批量测试,并且可以在测试完毕形成一个HTML格式的测试报告。为了实现HTML格式的测试报告,可以先到 http://tungwaiyip.info/software/HTMLTestRunner.html 下载 HTMLTestRunner.py 文件放入到 %PYTHON_HOME%\Lib\ 目录下。如果使用的是 Python 2.X 系列就不需要进行修改,Python 3.X 系列请作如下修改。
下面是unittest批量运行及报告产生的代码。
案例2-7:unittest批量运行及报告产生。
#!/usr/bin/env python
#coding:utf-8
import unittest
from HTMLTestRunner import HTMLTestRunner#导入HTMLTestRunner
test_dir='./'#测试的工作目录
discover=unittest.defaultTestLoader.discover(test_dir,pattern="*Test.py")#"*Test.py"为测试的文件,支持正则表达式
if __name__=='__main__':
runner=unittest.TextTestRunner()#运行符合条件的测试文件
#以下用于生成测试报告
fp=open("result.html","wb")# result.html为测试报考名
runner =HTMLTestRunner(stream=fp,title='测试报告',description='测试用例执行报告')
runner.run(discover)
fp.close()
测试报告如图2-29所示。
图2-29 unittest测试报告