目录
HTMLTestRunner
小试牛刀
1、在unittest中编写测试用例
2、添加报告路径已经报告内容
3、批量执行用例,导入测试报告内容中
4、当然是赶快执行查看报告内容啊
4、添加用例注释,增加报告完整性
总结:
我们做测试的人员们都知道测试完成后,肯定是会生成一个测试报告,那么当我们做自动化的时候,这个自动化报告也可以自动生成吗?python当然可以了!
HTMLTestRunner
HTMLTestRunner是Python标准库的unittest模块的扩展。它生成易于使用的HTML测试报告。
下载地址:http://tungwaiyip.info/software/HTMLTestRunner.html
下载完成后直接放到我们代码文件夹中,也可以放在其他地方,只要我们用的时候,可以直接调用就OK
下载下来后可以先看下其中代码,能否找到一些简单的使用方法。(由于文件过大,这里我只呈现了部分我们需要用到的代码内容)
# 输出到文件
fp = file('my_report.html', 'wb')
runner = HTMLTestRunner.HTMLTestRunner(
stream=fp,
title='My unit test',
description='This demonstrates the report output by HTMLTestRunner.'
)
# 使用外部样式表。
# 运行测试
runner.run(my_test_suite)
当然了我们只用这么多就可以生成报告了。
小试牛刀
话不多说,直接就是干,不过写之前我们先理下思路:
1、在unittest中编写测试用例
这里我还是直接调用前面写的通用代码了
# coding:utf-8
import unittest
import requests
class Music(unittest.TestCase):
def select(self,name):
url = 'https://api.apiopen.top/searchMusic'
data = {
"name":name
}
r = requests.post(url,data=data)
b = r.json()['result'][0]['title']
return b
def test01(self):
b = '断桥残雪'
a = self.select(b)
self.assertEqual(b,a)
print('这个是用例一')
def test02(self):
a = '说好不哭'
b = self.select(a)
self.assertEqual(a,b)
print('这个是用例二')
def test03(self):
a = '芒种'
b = self.select(a)
self.assertEqual(a,b)
print('这个是用例三')
if __name__ == '__main__':
unittest.main()
2、添加报告路径已经报告内容
通过os模块进行找到当前文件夹,使报告生成当前文件夹中
# 当前文件夹路径
report_path = os.path.dirname(os.path.realpath(__file__))
# 测试报告地址
report_abspath = os.path.join(report_path, "result.html")
fp = open(report_abspath, "wb")
# 报告详情
runner = HTMLTestRunner_cn.HTMLTestRunner(stream=fp,
title=u'自动化测试报告,测试结果如下:',
description=u'用例执行情况:')
3、批量执行用例,导入测试报告内容中
通过unittest中执行用例的方法,来批量执行用例
# 实例化
testunit = unittest.TestSuite()
# 加载用例
testunit .addTests(unittest.TestLoader().loadTestsFromTestCase(Music))
# 执行用例
runner.run(testunit)
4、当然是赶快执行查看报告内容啊
通过用例,我们可以看到这里已经完全生成报告了。
4、添加用例注释,增加报告完整性
当然肯定有的小伙伴们会说,这里不能看到通过的用例都是哪些?这个地方可以解决吗? python这么强大,这个肯定可以解决啊。不过需要我们在用例中添加注释。这样的话就会生成了详细内容。全部代码如下(添加注释后)
# coding:utf-8
import unittest
import requests
import os
from case import HTMLTestRunner_cn
class Music(unittest.TestCase):
def select(self,name):
url = 'https://api.apiopen.top/searchMusic'
data = {
"name":name
}
r = requests.post(url,data=data)
b = r.json()['result'][0]['title']
return b
def test01(self):
'''
歌名:断桥残雪
'''
b = '断桥残雪'
a = self.select(b)
self.assertEqual(b,a)
print('这个是用例一')
def test02(self):
'''
歌名:说好不哭
'''
a = '说好不哭'
b = self.select(a)
self.assertEqual(a,b)
print('这个是用例二')
def test03(self):
'''
歌名:芒种
'''
a = '芒种'
b = self.select(a)
self.assertEqual(a,b)
print('这个是用例三')
if __name__ == '__main__':
# 当前文件夹路径
report_path = os.path.dirname(os.path.realpath(__file__))
# 测试报告地址
report_abspath = os.path.join(report_path, "result.html")
fp = open(report_abspath, "wb")
# 报告详情
runner = HTMLTestRunner_cn.HTMLTestRunner(stream=fp,
title=u'自动化测试报告,测试结果如下:',
description=u'用例执行情况:')
# 实例化
testunit = unittest.TestSuite()
# 加载用例
testunit .addTests(unittest.TestLoader().loadTestsFromTestCase(Music))
# 执行用例
runner.run(testunit)
# 关闭报告
fp.close()
怀着小小的激动去查看了生成的报告,果然没有令我失望,已经完成展现出来了~~
总结:
感谢每一个认真阅读我文章的人!!!
我个人整理了我这几年软件测试生涯整理的一些技术资料,包含:电子书,简历模块,各种工作模板,面试宝典,自学项目等。欢迎大家点击下方名片免费领取,千万不要错过哦。
Python自动化测试学习交流群:全套自动化测试面试简历学习资料获取点击链接加入群聊【python自动化测试交流】:http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=DhOSZDNS-qzT5QKbFQMsfJ7DsrFfKpOF&authKey=eBt%2BF%2FBK81lVLcsLKaFqnvDAVA8IdNsGC7J0YV73w8V%2FJpdbby66r7vJ1rsPIifg&noverify=0&group_code=198408628