1 unittest 框架
unittest 是 Python 的标准库,不需要进行安装。 基本的框架是这样的:
import unittest#继承类,编写单元测试class calc(unittest.TestCase):#初始化函数def setUp(self):print("unittest start")#结束函数def tearDown(self):print("part of unittest end")#具体测试部分def test_add(self):result=1+1self.assertEqual(2,result)def test_minus(self):result=2-1self.assertEqual(1,result)#定义主函数def main():unittest.main()if __name__ == '__main__':main()
2 实例
3 报告
HTMLTestRunner 是一个基于 unittest 的第三方库,由 Wai Yip Tung 开发。
几乎绝大部分的 Python 第三方库都可以直接使用 pip install [package name]来安装,但HTMLTestRunner 略微有些不同。
3.1 安装 HTMLTestRunner
- 到 Wai Yip Tung 的个人网站(http://tungwaiyip.info/software/HTMLTestRunner.html)上下载HTMLTestRunner
- 将其保存到自己 Python 安装目录下的\Lib\site-packages 目录下
- 修改 HTMLTestRunner 文件(py 3版本)
- 导入库 import HTMLTestRunner 使用
修改内容:
第 94 行,import StringIO → import io第 539 行,self.outputBuffer = StringIO.StringIO()→ self.outputBuffer = io.StringIO()第 642 行,if not rmap.has_key(cls): → if not cls in rmap:第 766 行,uo = o.decode('latin-1') → uo = e第 775 行,ue = e.decode('latin-1') → ue = e第 631 行,print >> sys.stderr, '\nTime Elapsed: %s' % (self.stopTime-self.startTime) → print(sys.stderr, '\nTime Elapsed: %s' % (self.stopTime-self.startTime))
3.2 实例
import HTMLTestRunnerimport unittestdirectory = r"[dir]"def create_suite():test_suit = unittest.TestSuite()discover = unittest.defaultTestLoader.discover(directory, pattern='*_unittest.py', top_level_dir=None)counter = 0for i in discover:counter += 1print("已发现 {} 个测试实例需要执行".format(counter))for j in i:test_suit.addTest(j)return test_suitdef main():filename = "D:\\result.html"f = open(filename, 'wb')runner = HTMLTestRunner.HTMLTestRunner(stream=f, title="测试报告", description="测试实例执行清况:")runner.run(create_suite())f.close()if __name__ == '__main__':main()
