简单的单元测试unittest实例

unittest是Python中自带的一个单元测试模块,经常用它来作单元测试,它里面封装了用例的初始化操做和执行,以及返回结果的校验等操做。html

在学习unittest框架以前须要先了解几个知识点:python

  • TestCase测试用例
  • TestSuit测试用例集,也就是多个测试用例的集合,称之为TestSuit
  • TestLoader加载testcase到testsuit中
  • TestRunner是用来执行测试用例的,将用例的测试结果保存到TestResult中,包括全部测试用例执行以后的统计状况,成功失败等等信息

 下面就经过一个具体的例子来看看unittest是怎么实现的框架

import unittest def cacl(a,b): return a/b class MyTest(unittest.TestCase):#类名须要以大写字母开头
    def setUp(self): print("每一个用例执行以前都会执行") def tearDown(self): print("每一个用例执行以后都会执行") @classmethod def setUpClass(cls): print("全部用例执行以前运行") @classmethod#类方法
    def tearDownClass(cls): print("全部用例执行以后运行") def test_a(self): res = cacl(1,2) self._testMethodDoc="正案例"#用于生成报告时用例描述的显示
        self.assertEqual(0.5,res,'success')#断言
    def test_b(self): '''反案例'''#用于生成报告是用例描述的第二种显示方式
        res = cacl(1,2) self.assertNotEqual(0.5, res, 'failed') if __name__ == '__main__': unittest.main()#能够运行全部以test开头的用例,用例的执行顺序按照test后面的ascii码值的大小顺序,值小的先执行

下面是一些经常使用的断言单元测试

assertEqual(a, b)     a == b assertNotEqual(a, b) a != b assertTrue(x) bool(x) is True assertFalse(x) bool(x) is False assertIsNone(x) x is None assertIsNotNone(x) x is not None assertIn(a, b) a in b assertNotIn(a, b) a not in b

上面是实现用例执行的一种方式,那如何生成测试报告呢,那就须要引入python的另外一个模块HtmlTestRunner或者pip源上面下载BeautifulReport扩展包,这两个模块都须要本身安装,执行的测试用例结果以及一些统计信息会记录到一个html文件中学习

安装HtmlTestRunner:直接将HTMLTestRunner.py这个文件放在python的环境变量的目录中便可,任何一个环境变量目录均可以,lib、site-packages等测试

安装BeautifulReport:将BeautifulReport文件夹放入site-packages目录中,这是由于底层框架将目录信息固定了ui

首先建立TestSuit测试套件测试用例集spa

if __name__ == '__main__': test_suit = unittest.TestSuite()#建立一个用例集合用例套件 #方式1
    test_suit.addTest(MyTest("test_a"))#将类中的一个用例添加到测试集合中 #方式2
    test_suit.addTest(unittest.makeSuite(MyTest))#向测试套件中添加MyTest中全部的用例 #方式3
#若是咱们有不少个模块,每一个模块下面都写了不少python文件,每一个python文件里面都有测试用例,那怎么把这个目录下的用例都执行了呢,就要先找到这个目录下的全部python文件,而后找到里面的测试用例,逐个执行,代码以下:
   all_case = unittest.defaultTestLoader.discover("case","*.py")#获取case目录(能够是相对路径或者绝对路径或者目录名),若是case变成“.”表明当前目录下的全部文件 # 下全部*.py(支持模糊匹配)文件下的全部用例 [test_suit.addTests(case) for case in all_case]#循环将全部用例添加到测试套件中

 

HTMLTestRunner生成测试报告code

import HTMLTestRunner#引入扩展包
f = open("test.html","wb")#写报告以前须要先以二进制的写形式打开文件这样就不用指定字符集
testrunner = HTMLTestRunner.HTMLTestRunner(stream=f,title="测试集title",description="测试集描述") testrunner.run(test_suit)#执行测试报告并生成测试报告

 

BeautifulReport生成测试报告(这种方式生成的报告更加的美观)xml

连接:BeautifulReport底层框架的解析以及html报告页面元素的更改

import BeautifulReport as br#引入包,以后设置一下别名
br = br.BeautifulReport(test_suit)#将用例集加入到对象中
br.report(description="beautifulreport",filename="brtest",log_path="")#执行用例统计结果,并生成测试报告 #filename是测试报告的名称,log_path能够指定测试报告的存储目录,这个参数可选

 

咱们在后续进行持续集成的时候,要让代码自动运行,就会用到Jenkins了,可是上面产生的测试报告都是html格式的,Jenkins不认识,就在Jenkins里面显示不出来。那我们就要产生一些Jenkins认识的测试报告,Jenkins认识xml格式的报告,那我们就产生xml格式的呗,就须要用一个新的模块,xmlrunner,安装直接 pip install xmlrunner便可,代码以下:

import xmlrunner runner = xmlrunner.XMLTestRunner(output='report')#指定报告放的目录
runner.run(test_suite)
相关文章
相关标签/搜索