封装一个requests的基类,用与对各种接口的调用
# -*- coding: utf-8 -*-
# @Time : 2020/1/13 19:55
# @Author : Willam.zja
# @FileName: base_requests.py
# @Software: PyCharm
# @Blog :https://blog.csdn.net/enemy_sprites
import sys
import os
sys.path.append(os.getcwd())
import requests
import json
class BaseRequests(object):
def send_get(self,url,data,cookie=None,get_cookie=None,header=None):
response = requests.get(url=url,params=data,cookies=cookie,headers=header)
if get_cookie != None:
cookie_value_jar = response.cookies
cookie_value = requests.utils.dict_from_cookiejar(cookie_value_jar)
res = response.text
return res
def send_post(self,url,data,cookie=None,get_cookie=None,header=None):
response = requests.get(url=url,data=data,cookies=cookie,headers=header)
if get_cookie != None:
cookie_value_jar = response.cookies
cookie_value = requests.utils.dict_from_cookiejar(cookie_value_jar)
res = response.text
return res
def run_main(self,method,url,data,cookie=None,get_cookie=None,header=None):
base_url = 'http://japi.juhe.cn/' #这里需要写活
if 'http' not in url:
url = base_url + url
#print(url)
if method == 'get':
res = self.send_get(url,data,cookie,get_cookie,header)
else:
res = self.send_post(url,data,cookie,get_cookie,header)
try:
res = json.loads(res)
except Exception as e:
print('解析json格式数据失败,请检查以下问题:\n网络是否通畅\n返回数据不能执行jsonn转换')
raise e
return res
request = BaseRequests()
if __name__ == '__main__':
url = 'charconvert/change.from'
data = {
"text":"csdn论坛Millet-接口自动化测试",
"type":1,
"key":"5242d925b50cf44cc967f4e9451db712"
}
print(request.run_main('get', url, data))
先上代码组,然后讲解代码思路
代码思路
首先导入模块不说了
封装一个get接口和一个post接口
大家可能看不懂的是get_cooke这个参数,这个参数在下边的main中没有调用,是用于后期操作cookie回写的参数,后边会阐明,
在写一个run_main方法,用于调用时判断是调用封装好的哪一个接口,以及一个url的处理,url是传入的参数,如果没有传入host,就将host与url做一个拼接,如果传入一个完整的url,就不需要进行处理,直接使用即可,最后直接实例化一个对象request,一个简单的单例模式,用于其他模块的调用
总体分两步
1、封装requests接口
2、写一个调用接口的主函数
这些代码咱们还要改进,例如host这里就要写活,所以,需要写一些配置文件