我们都知道,在robot framework的IDE中执行测试用例,会自动生成测试报告,而纯Python写的函数,单元测试方法是不会自动生成测试报告的,本文就来讲下单元测试和测试报告的生成。
单元测试类库:unittest,在安装python就自带,不需要额外安装,只需要引用即可,下面贴上核心代码,包括两个单元测试:
#unittest1.py
#coding:utf-8 import unittest class case1(unittest.TestCase): def test_case1(self): """ 这里是第1个测试用例 """ result=125*30 print("test_case1 begin") #self.assertEqual(result,3750,'test_case1 结果失败!') assert result==3750,'test_case1 fail!' print("test_case1 结果正确") pass
#unittest2.py
#coding:utf-8 import unittest class case2(unittest.TestCase): def test_case2(self): """ 这里是第2个测试用例 """ print("test_case2 begin") s="this is test case2" assert 'case2' in s,'test_case2 fail!' #这里我们写一个失败的测试用例 assert 'case22' in s,'test_case2 fail!' print("test_case2 结果正确".decode(encoding='utf-8')) pass #下列调用可以单独执行本单元测试 #if __name__ =="__main__": # unittest.main()
#run_unittests.py(需要下载第三方类库:HTMLTestRunnerCN.py,在网上都能搜到,文章最后的demo下载中会包含)
#coding:utf-8 import unittest from unittest1 import case1 from unittest2 import case2 import HTMLTestRunnerCN #创建测试套件(集合) suite = unittest.TestSuite() #添加多个单元测试方法 suite.addTest(case1("test_case1")) suite.addTest(case2("test_case2")) #…… #运行测试套件,批量执行单元测试用例,不输出html报告文件 #unittest.TextTestRunner().run(suite) #第三方包HTMLTestRunnerCN执行测试用例,能输出到html测试报告 #路径:当前目录report.html st=open('./report.html','wb') HTMLTestRunnerCN.HTMLTestRunner(stream=st,title='我的测试报告',tester="张三",description="多个单元测试执行").run(suite)
执行run_unittests.py之后,在代码目录生成一个report.html文档,内容如下:
代码中所有的print语句输出的内容都会被记录在报告中,非常方便查看代码执行情况。
demo下载:PythonUnittestReportDemo.zip