初探自动化测试

python版本为3.x
http_request请求工具编写

 1 import requests
 2 class DemoHttpRequest:
 3 
 4     def demo_http_request(self, method, url, data = None, cookie = None):
 5 
 6         if method.lower() == 'get':
 7             res = requests.get(url, data, verify=False)
 8         elif method.lower == 'post':
 9             res = requests.post(url, data, cookies = cookie,verify=False)
10         return res
 
 

test_httprequest(注释的为代码的演进过程) 

key为聚合数据中老黄了的数据(https://www.juhe.cn/

  1 # -*- coding: utf-8 -*-
  2 # @Time    : 2019/12/31 6:14
  3 # @File    : test_http_request.py
  4 
  5 # 方法一
  6 # import unittest
  7 # from python11.Demo1.http_request import DemoHttpRequest
  8 # class TestHttpRequest(unittest.TestCase):
  9 #     def setUp(self):
 10 #         self.login_url = "http://v.juhe.cn/laohuangli/d"
 11 #         self.login_data = {"date":"2020-01-07","key":"f"}
 12 #         # 充值,没有充值的接口,这里仅仅代表示例
 13 #         # self.recharge_url = "http://v.juhe.cn/laohuangli/d"
 14 #         # self.recharge_data = {"date":"2020-01-07","key":"f"}
 15 #         # self.cookies = DemoHttpRequest().demo_http_request('get', self.url, self.data).cookies
 16 #     def test_calendar(self):
 17 #         res = DemoHttpRequest().demo_http_request("get", self.login_url, self.login_data)
 18 #         try:
 19 #             self.assertEqual('successed',res.json()['reason'])
 20 #         except AssertionError as e:
 21 #             print("错误是{}".format(e))
 22 #             raise e
 23 #     # 需要传cookies, 示例
 24 #     # def test_recharge(self):
 25 #     #     res = DemoHttpRequest().demo_http_request("get", self.recharge_url, self.recharge_data,self.cookies )
 26 #     #     self.assertEqual('successed', res.json()['reason'])
 27 #     def tearDown(self):
 28 #         pass
 29 '''
 30 # 方法二 关于cookies  全局变量方法
 31 import unittest
 32 from python11.Demo1.http_request import DemoHttpRequest
 33 
 34 COOKIE = None     # 全局变量
 35 class TestHttpRequest(unittest.TestCase):
 36     def setUp(self):
 37         self.login_url = "http://v.juhe.cn/laohuangli/d"
 38 
 39     def test_calendar(self):
 40         global COOKIE   # 声明全局变量
 41         login_data = {"date": "2020-01-07", "key": "f"}
 42         res = DemoHttpRequest().demo_http_request("get", self.login_url, login_data)
 43         if res.cookies:     # 如果cookie存在
 44             COOKIE = res.cookies
 45         try:
 46             self.assertEqual('successed',res.json()['reason'])
 47         except AssertionError as e:
 48             print("错误是{}".format(e))
 49             raise e
 50     # 需要传cookies, 示例
 51     # def test_recharge(self):
 52     #     global COOKIE
 53     #     res = DemoHttpRequest().demo_http_request("get", self.recharge_url, self.recharge_data, COOKIE )
 54     #     self.assertEqual('successed', res.json()['reason'])
 55     def tearDown(self):
 56         pass
 57 '''
 58 '''
 59 # 方法三
 60 import unittest
 61 from python11.Demo1.http_request import DemoHttpRequest
 62 from python11.Demo1.get_data import GetData
 63 
 64 class TestHttpRequest(unittest.TestCase):
 65     def setUp(self):
 66         self.login_url = "http://v.juhe.cn/laohuangli/d"
 67 
 68     def test_calendar(self):
 69         login_data = {"date": "2020-01-07", "key": "f"}
 70         res = DemoHttpRequest().demo_http_request("get", self.login_url, login_data)
 71         if res.cookies:     # 如果cookie存在
 72             setattr(GetData, 'Cookie', res.cookies)     # 将res.cookies值赋值给cookie
 73         try:
 74             self.assertEqual('successed',res.json()['reason'])
 75         except AssertionError as e:
 76             print("错误是{}".format(e))
 77             raise e
 78     # 需要传cookies, 示例
 79     # def test_recharge(self):
 80     #     res = DemoHttpRequest().demo_http_request("get", self.recharge_url, self.recharge_data, getattr(GetData,"Cookie") )  # getattr(GetData,"Cookie")取值
 81     #     self.assertEqual('successed', res.json()['reason'])
 82     def tearDown(self):
 83         pass
 84 '''
 85 '''
 86 # 参数化
 87 import unittest
 88 from python11.Demo1.http_request import DemoHttpRequest
 89 from python11.Demo1.get_data import GetData
 90 
 91 
 92 class TestHttpRequest(unittest.TestCase):
 93     def setUp(self):
 94         pass
 95     # def __init__(self, url, data, method = 'get' , excepted = 'successed', methodName = 'test_api'):
 96     #     super(TestHttpRequest, self).__init__(methodName) # 继承并保留父类的方法
 97     #     self.url = url
 98     #     self.data = data
 99     #     self.method = method
100     #     self.excepted = excepted
101     def test_api(self):
102         method = 'get'
103         url = 'http://v.juhe.cn/laohuangli/d'
104         data = {"date": "2020-01-07", "key": "f"}
105         # res = DemoHttpRequest().demo_http_request(self.method, self.url, self.data)
106         res = DemoHttpRequest().demo_http_request(method, url, data)
107         if res.cookies:     # 如果cookie存在
108             setattr(GetData, 'Cookie', res.cookies)     # 将res.cookies值赋值给cookie
109         try:
110             print(res.json()['reason'])
111             # self.assertEqual(self.excepted, res.json()['reason'])
112             self.assertEqual('successed', res.json()['reason'])
113 
114         except AssertionError as e:
115             print("错误是{}".format(e))
116             raise e
117     # 需要传cookies, 示例
118     # def test_recharge(self):
119     #     res = DemoHttpRequest().demo_http_request("get", self.recharge_url, self.recharge_data, getattr(GetData,"Cookie") )  # getattr(GetData,"Cookie")取值
120     #     self.assertEqual('successed', res.json()['reason'])
121     def tearDown(self):
122         pass
123 '''
124 '''
125 # 参数化
126 import unittest
127 from python11.Demo1.http_request import DemoHttpRequest
128 from python11.Demo1.get_data import GetData
129 
130 
131 class TestHttpRequest(unittest.TestCase):
132     def __init__(self):
133         super().__init__()
134         self.url = 'http://v.juhe.cn/laohuangli/d'
135         self.data = {'date' : '2020-01-07', 'key': 'ff'}
136         self.method = 'get'
137         self.excepted = 'successed'
138 
139     def test_api(self):
140         res = DemoHttpRequest().demo_http_request(self.method, self.url, self.data)
141         try:
142             print(res.json()['reason'])
143             self.assertEqual('successed', res.json()['reason'])
144         except AssertionError as e:
145             print("错误是{}".format(e))
146             raise e
147 if __name__ == '__main__':
148     TestHttpRequest().test_api()
149 '''
150 # 参数化
151 import unittest
152 from python11.Demo1.http_request import DemoHttpRequest
153 from python11.Demo1.get_data import GetData
154 
155 class TestHttpRequest(unittest.TestCase):
156     def __init__(self, method, url, data, excepted, methodName):
157         super().__init__(methodName)
158         self.url = url
159         self.data = data
160         self.method = method
161         self.excepted = excepted
162 
163 
164     def test_api(self):
165         res = DemoHttpRequest().demo_http_request(self.method, self.url, self.data)
166         try:
167             print(res.json()['reason'])
168             self.assertEqual('successed', res.json()['reason'])
169         except AssertionError as e:
170             print("错误是{}".format(e))
171             raise e
test_suite添加组件,生成测试报告
# -*- coding: utf-8 -*-
# @Time    : 2019/12/31 6:14
# @File    : test_suite.py

'''
import unittest
import HTMLTestReportCN
from python11.Demo1 import test_http_request
# 加载用例,示例1
# 创建容器
suite = unittest.TestSuite()

# 加载用例
loader = unittest.TestLoader()
suite.addTest(loader.loadTestsFromModule(test_http_request))

# 执行用例
with open("test_summer.html", "wb") as file:
    runner = HTMLTestReportCN.HTMLTestRunner(stream=file, verbosity=1,title='第一次写',description='太难了',tester='aa')
    runner.run(suite)

'''
import unittest
import HTMLTestReportCN
from python11.Demo1.test_http_request import TestHttpRequest
# 列表中嵌套字典
test_data = [{'url' : "http://v.juhe.cn/laohuangli/d",
              'data' : {"date": "2020-01-07", "key": "ff"},
              'excepted' : 'successed',
              'method':'get',
              'methodName' : 'test_api'
              }]

# 创建容器
suite = unittest.TestSuite()

# 加载用例
print(test_data[0]['method'])
suite.addTest(TestHttpRequest( test_data[0]['method'],
                               test_data[0]['url'],
                               test_data[0]['data'],
                               test_data[0]['excepted'],
                               test_data[0]['methodName']
                               ))

# 执行用例
with open("test_summer.html", "wb") as file:
    runner = HTMLTestReportCN.HTMLTestRunner(stream=file, verbosity=1,title='第一次写',description='太难了',tester='胡朝鹏')
    runner.run(suite)
 
美化后的报告下载网址:https://github.com/findyou/HTMLTestRunnerCN

猜你喜欢

转载自www.cnblogs.com/huchaopeng/p/12177804.html