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+1
self.assertEqual(2,result)
def test_minus(self):
result=2-1
self.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 HTMLTestRunner
import unittest
directory = r"[dir]"
def create_suite():
test_suit = unittest.TestSuite()
discover = unittest.defaultTestLoader.discover(directory, pattern='*_unittest.py', top_level_dir=None)
counter = 0
for i in discover:
counter += 1
print("已发现 {} 个测试实例需要执行".format(counter))
for j in i:
test_suit.addTest(j)
return test_suit
def 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()