day11_unittest生成测试报告
HTMLTestRunner是帮助产生测试报告的,把HTMLTestRunner.py这个文件放到环境变量里,最简单的方法就是把HTMLTestRunner.py复制到External Libraries下面的任一目录里,这里我是放到了Lib目录下,以后即使在别的目录下也可以使用
TestCase是测试用例
TestSuite是用例集合
TestLoader就是查找测试用例的,加载TestCase到TestSuite中
TestRunner是来执行测试用例的,测试的结果会保存到TestResult实例中,包括运行了多少测试用例,成功了多少,失败了多少等信息
import unittest
import HTMLTestRunner
def add(a, b):
return a + b
class AddTest(unittest.TestCase):
def test_normal(self):
res = add(1, 1)
self.assertEqual(2, res)
def test_error(self):
res = add(1, 1)
self.assertEqual(1, res)
def setUp(self):
print('setUp')
def tearDown(self):
print('tearDown')
@classmethod
def setUpClass(cls):
print('setUpClass')
@classmethod
def tearDownClass(cls):
print('tearDownClass')
if __name__ == '__main__':
# suite = unittest.TestSuite() # 定义一个空的测试集合,suite.addTest(类名('用例名称'))是添加某个测试用例
# suite.addTest(unittest.makeSuite(AddTest)) # 一次性加载一个类文件下所有测试用例到suite中去
test_suite = unittest.makeSuite(AddTest) # 这行等于上面两行
fw = open('ssj.html', 'wb') # wb写入模式,b是bytes,可以写入图片
runner = HTMLTestRunner.HTMLTestRunner(stream=fw, title='测试报告', description='2020年第一个测试报告')
runner.run(test_suite)
fw.close()
运行完成后在pycharm里打印出F.,.代表用例通过,F代表用例失败,如下图:
在当前目录里会生成ssj.html这个文件,点开ssj.html在当前页面点击右上角的任意一个浏览器,如下图:
以google浏览器为例会在浏览器里生成测试报告,如下图:
点击All会显示具体用例执行的情况,点开fail会看到具体的报错信息,HTMLTestRunner这个模块产生的报告,是给咱们自己看的,这个报告看着不是很好看,现在用BeautifulReport来生成测试报告,把BeautifulReport.zip解压到任一目录下,然后复制第二层文件夹到环境变量里,就是环境变量Lib下的site-packages文件夹下,我放到D:\new_python\Lib\site-packages这个路径下,然后导入BeautifulReport,通过如下代码实现:
import unittest
import BeautifulReport
def add(a, b):
return a + b
class AddTest(unittest.TestCase):
def test_normal(self):
res = add(1, 1)
self.assertEqual(2, res)
def test_error(self):
res = add(1, 1)
self.assertEqual(1, res)
def setUp(self):
print('setUp')
def tearDown(self):
print('tearDown')
@classmethod
def setUpClass(cls):
print('setUpClass')
@classmethod
def tearDownClass(cls):
print('tearDownClass')
if __name__ == '__main__':
test_suite = unittest.makeSuite(AddTest)
bf = BeautifulReport.BeautifulReport(test_suite)
bf.report(filename='0605_new_report.html', description='更好看的测试报告') # 还可以传一个log_path,想在哪生成报告就写上具体的路径,如果没写log_path,就在当前目录下生成测试报告
print(bf.failure_count) # 失败次数
print(bf.success_count) # 通过次数