(4)上一篇我们已经读取了配置文件。现在就开始使用读取出的值组合成接口的url,即现在可使用的url(geturlParams.py)
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2018/11/8 16:25
# @Author : xx
# @Site :
# @File : test11.py
# @Software: PyCharm
#获取接口的URL
from testFile import readConfig
from testFile import readExcel
readConfig = readConfig.ReadConfig()#实例化readConfig类,用于读取配置文件config.ini文件
class geturl_Now():#定义一个方法,读取配置文件中的协议和host,组合成url
def get_url(self):
now_url = readConfig.get_http('scheme')+'://'+readConfig.get_http('baseurl') #从config.ini文件获取协议和host
return now_url
# print(geturl_Now().get_url()) #Geturl_Now()就是实例化类。不带参数会默认self
#读取表格数据作为请求的参数
(5)我们已经有了url,接下来就应该找到接口对应的参数和请求方法,所以开始封装请求方式post/get方法封装(configHttp.py)
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2018/11/8 16:25
# @Author : xx
# @Site :
# @File : test11.py
# @Software: PyCharm
#这个文件主要来通过get、post等方法来进行http请求,并拿到请求响应。
import requests
import json
#
# headers = {
# 'content-type': 'application/x-www-form-urlencoded',
# 'User-Agent': 'okhttp/3.8.1'
# }
#,headers=headers
class Run_http():
#定义post请求方法.参数url和data
def post_method(self,url,data,headers):
# print(url, data,headers)
response = requests.post(url=url,data=data,headers=headers).json()
# print(response.text)
# res=response.text
res = json.dumps(response, ensure_ascii=False, sort_keys=True, indent=2)
# print(res)
return res
def get_method(self,url,data,headers):
response = requests.get(url= url,params=data,headers=headers).json()
res = json.dumps(response, ensure_ascii=False, sort_keys=True, indent=2)
return res
def run_http(self,method, url, data,headers):
# print(url, data)
result = None
if method =="post":
# print(url,data)
result=self.post_method(url,data,headers)
elif method=="get":
result = self.get_method(url,data,headers)
else:
print("method值错误")
return result
(6)看到请求方法已经封装好了。这时候会想起好像需要请求头。有时候需要登录,怎么办呢。就需要封装一个登录获取登录token也就是登录凭证的方法(get_token.py)
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2018/11/8 16:25
# @Author : CT
# @Site :
# @File : test11.py
# @Software: PyCharm
#判断token是否存在
import jsonpath
from common import configHttp
from testFile import readConfig
from testFile import getpathInfo
import json
import requests
#实例化对象
Run_http = configHttp.Run_http()
readConfig = readConfig.ReadConfig()
#定义header头
headers = {
'content-type': 'application/x-www-form-urlencoded',
'User-Agent': 'okhttp/3.8.1',
'x-safe-key':''
}
#登录获取token,将token写入headers中
# print( readConfig.get_http('baseurl'))
url_login = readConfig.get_http('scheme')+ "://" +readConfig.get_http('baseurl')+"/v1/auth/auth" #登录接口
# print(url_login)
#接口登录的请求参数自己看自己需要测试的APP的接口请求参数。我这里是举例
data = {
"area_code":"+86",
"tel":"12345678901",
"code":"666666",
"device":"",
"device_type":"1" #1代表安卓手机
}
results = Run_http.run_http('post', url_login, data, headers)
#打印出登录成功返回的json值,方便取token值
#print(results)
def get_token():
#token取值自己看登录接口登录成功返回的json字段。不要直接抄,依据自己接口返回来取登录凭证token值
token=json.loads(results)["data"]["token"]
if token in results:
# headers.append(token)
headers['x-safe-token']=token
# print(headers)
else:
print("token不存在")
return headers