Python+Unittest接口自动化测试(三)--使用Unittest生成测试报告


1. 下载HTMLTestRunner,放到Python安装目录的Lib下

导入验证一下,没有报错,说明是成功的

二、代码实现部分

1. RunMain模块:

#coding=utf-8

import requests
import json

class RunMain:
    """无构造器"""
    def send_get(self, url, data):
        res = requests.get(url=url, params=data).json()
        return res


    def send_post(self, url, data):
        res = requests.post(url=url, data=data).json()
        return res


    def run_main(self, url, method, data=None):
        res = None
        if method == 'GET':
            res = self.send_get(url, data)
        else:
            res = self.send_post(url, data)
        return res

2. 主代码:

 1 #coding:utf-8
 2 
 3 import unittest
 4 from TestDemo_No_init import RunMain   # 导入之前写好的模块
 5 import json
 6 import HTMLTestRunner   # 导入刚才下载的HTMLTestRunner
 7 
 8 
 9 class TestMethod(unittest.TestCase):
10     
11     def setUp(self):
12         self.run = RunMain()
13 
14 
15     def test01(self):
16         """这是一个POST的接口自动化测试"""    # 添加用例描述,增加HTML测试报告生成后的可读性
17         url = 'http://127.0.0.1:8000/login/'
18         data = {
19             'username': 'Jessie',
20             'password': '123456'
21         }
22         r = self.run.run_main(url, 'POST', data)
23         print(r)
24         re = json.dumps(r, indent=2, sort_keys=False, ensure_ascii=False)
25         re_new = json.loads(re)
26         self.assertEqual(re_new['user'], 'Jessie', '测试失败')
27 
28 
29     def test02(self):
30         """查询翻译词的接口"""
31         url = 'http://fanyi.youdao.com/translate'
32         data = {
33             'doctype': 'json',
34             'type': 'AUTO',
35             'i': 'weather'
36         }
37         r = self.run.run_main(url, 'GET', data)
38         print(r)
39         re = json.dumps(r, indent=2, sort_keys=False, ensure_ascii=False)
40         re_new = json.loads(re)
41         self.assertEqual(re_new['errorCode'], 0, '测试失败')
42 
43 
44     @unittest.skip('test03')   # 跳过test03测试用例
45     def test03(self):
46         url = 'http://fanyi.youdao.com/translate'
47         data = {
48             'doctype': 'json',
49             'type': 'AUTO',
50             'i': '天气'
51         }
52         r = self.run.run_main(url, 'GET', data)
53         print(r)
54         re = json.dumps(r, indent=2, sort_keys=False, ensure_ascii=False)
55         re_new = json.loads(re)
56         self.assertEqual(re_new['errorCode'], 0, '测试失败')
57 
58 
59 
60 if __name__ == '__main__':
61     # unittest.main()
62 
63     filepath = 'G:/ImoocInterface/report/test_report.html'   # 测试报告生成的地址
64     fp = open(filepath, 'wb')   # 文件流
65 
66     suite = unittest.TestSuite()
67     suite.addTest(TestMethod('test01'))
68     suite.addTest(TestMethod('test02'))
69     # suite.addTest(TestMethod('test03'))
70 
71     # runner = unittest.TextTestRunner()
72     # runner.run(suite)
73     # unittest.TextTestRunner().run(suite)
74 
75     # stream:文件流  title:报告的标题  description:报告的描述信息
76     runner = HTMLTestRunner.HTMLTestRunner(stream=fp, title='测试报告', description='测试结果')
77 
78     runner.run(suite)   #HTML报告和Unittest结合
79     fp.close()

3. 运行

注意:一定是运行这个py文件

 运行整个py文件的方法:

选择菜单栏Run下面的Run

 会有一个弹框出来,直接选中要运行的py文件,然后点右上角的运行按钮

三、查看测试报告

1. 找到设置存放报告的目录G:\ImoocInterface\report,果然有一份测试报告

2. 打开报告查看详情