requests实例-带参数的
1.使用moco搭建一个接口
创建一个文件夹moco2
放入文件:moco-runner-1.0.0-standalone.jar , configure.json以及一个res.py文件
2.configure.json
[
{
"description": "模拟获取某个功能的具体信息接口,get请求和响应,返回json格式数据,无参数",
"request": {
"method": "get",
"uri": "/book_list"
},
"response": {
"json": {
"error_code": 0,
"reason": "successed",
"books": "软件测试",
"checkstatus": "on"
},
"status": 200
}
},
{
"description": "模拟获取某个功能的具体信息接口,get请求和响应,返回json格式数据,有参数",
"request": {
"method": "get",
"uri": "/book_info",
"queries": {
"bookname": "软件测试",
"checkstatus": "on"
}
},
"response": {
"json": {
"error_code": 0,
"reason": "successed",
"name": "软件测试",
"price": "666"
},
"status": 200
}
},
{
"description": "模拟接口,post_form请求和响应,入参是form形式,返回是json数据",
"request": {
"headers": {
"content-type": "application/x-www-form-urlencoded"
},
"method": "post",
"uri": "/login01",
"forms": {
"username": "zhangshan",
"password": "123456"
}
},
"response": {
"json": {
"error_code": 0,
"reason": "successed",
"username": "zhangshan",
"checkstatus": "on"
},
"status": 200
}
},
{
"description": "模拟接口,post_json请求和响应,入参是json形式,返回是json数据",
"request": {
"method": "post",
"uri": "/login02",
"json": {
"username": "zhangshan",
"password": "123456"
}
},
"response": {
"headers": {
"Content-Type": "application/json;charset=utf-8"
},
"json": {
"error_code": 0,
"reason": "successed",
"username": "zhangshan",
"checkstatus": "on"
},
"status": 200
}
}
]
浏览器访问网址
http://127.0.0.1:8888/book_list
http://127.0.0.1:8888/book_info?bookname=软件测试&checkstatus=on
3.代码实例
1.get请求
import json
import requests
# get
url = 'http://127.0.0.1:8888'
path = '/book_list'
full_url = url + path
print('GET 请求完整的url', full_url)
headers_dict = {}
print('GET 请求完整的请求头', headers_dict)
res = requests.get(full_url, headers=headers_dict, )
print('GET 响应状态码', res.status_code)
print('GET 响应头', res.headers)
print('GET 响应结果', res.text)
print('GET 响应时间', res.elapsed.total_seconds(), '秒')
json_res = res.json()
print('GET 响应结果', json_res)
# get_queries
url = 'http://127.0.0.1:8888'
path = '/book_info'
full_url = url + path
print('GET 请求完整的url', full_url)
# 'checkstatus'='on' 是get与get_queries的关联依赖参数
data = json.loads(res.text) # 把json转成字典类型
checkstatus = data['checkstatus'] # 字典取值
params_dict = {'bookname': '软件测试', 'checkstatus': checkstatus}
print('GET 请求完整的参数', params_dict)
headers_dict = {}
print('GET 请求完整的请求头', headers_dict)
res = requests.get(full_url, params=params_dict, headers=headers_dict, )
print('GET 响应状态码', res.status_code)
print('GET 响应头', res.headers)
print('GET 响应结果', res.text)
print('GET 响应时间', res.elapsed.total_seconds(), '秒')
json_res = res.json()
print('GET 响应结果', json_res)
2.post请求
import json
import requests
# post_forms
url = 'http://127.0.0.1:8888'
path = '/login01'
full_url = url + path
print('POST 请求的完整url', full_url)
data = {"username": "zhangshan", "password": "123456"} # 传入json格式
print('POST 请求参数', data)
headers_dict = {'Content_Type': 'application/x-www-form-urlencoded'} # forms格式
res2 = requests.post(full_url, data=data, headers=headers_dict)
print('POST 响应状态码', res2.status_code)
print('POST 响应头', res2.headers)
print('POST 响应结果', res2.text)
print('POST 响应时间', res2.elapsed.total_seconds(), '秒')
json_res2 = res2.json()
print('POST 响应结果', json_res2)
# post_json
url = 'http://127.0.0.1:8888'
path = '/login02'
full_url = url + path
print('POST 请求的完整url', full_url)
data = {"username": "zhangshan", "password": "123456"} # 传入json格式
data = json.dumps(data) # python类型转化为json字符串
print('POST 请求参数', data)
headers_dict = {'Content_Type': 'application/json'} # json格式
res3 = requests.post(full_url, data=data, headers=headers_dict)
print('POST 响应状态码', res3.status_code)
print('POST 响应头', res3.headers)
print('POST 响应结果', res3.text)
print('POST 响应时间', res3.elapsed.total_seconds(), '秒')
json_res3 = res3.json()
print('POST 响应结果', json_res3)
4.封装成函数
1.get请求
import requests
def get(full_url, headers_dict):
# try 抛出异常
try:
res = requests.get(full_url, headers=headers_dict, )
print('GET 响应状态码', res.status_code)
print('GET 响应头', res.headers)
print('GET 响应结果', res.text)
print('GET 响应时间', res.elapsed.total_seconds(), '秒')
json_res = res.json()
print('GET 响应结果', json_res)
return json_res
except Exception as e:
print('get错误')
url = 'http://localhost:8888'
path = '/book_list'
full_url = url + path
headers_dict = {}
res = get(full_url, headers_dict)
# 通过业务状态码判断是否成功
if res['error_code'] == 0:
print('成功')
else:
print('失败')
def get_queries(full_url, params_dict, headers_dict):
# try 抛出异常
try:
res1 = requests.get(full_url, params=params_dict, headers=headers_dict, )
print('GET 响应状态码', res1.status_code)
print('GET 响应头', res1.headers)
print('GET 响应结果', res1.text)
print('GET 响应时间', res1.elapsed.total_seconds(), '秒')
json_res1 = res1.json()
print('GET 响应结果', json_res1)
return json_res1
except Exception as e:
print('get错误')
url = 'http://localhost:8888'
path = '/book_info'
full_url = url + path
params_dict = {'bookname': '软件测试', 'checkstatus': 'on'}
headers_dict = {}
res1 = get_queries(full_url, params_dict, headers_dict)
# 通过业务状态码判断是否成功
if res1['error_code'] == 0:
print('成功')
else:
print('失败')
2.post请求
import requests
import json
def post_forms(full_url, data, headers_dict):
try:
res2 = requests.post(full_url, data=data, headers=headers_dict)
print('POST 响应状态码', res2.status_code)
print('POST 响应头', res2.headers)
print('POST 响应结果', res2.text)
print('POST 响应时间', res2.elapsed.total_seconds(), '秒')
json_res2 = res2.json()
print('POST 响应结果', json_res2)
return json_res2
except Exception as e:
print('post_forms 错误')
url = 'http://localhost:8888'
path = '/login01'
full_url = url + path
data = {"username": "zhangshan", "password": "123456"}
headers_dict = {'content_type': 'application/x-www-form-urlencoded'} # forms格式
res2 = post_forms(full_url, data, headers_dict)
if res2['checkstatus'] == 'on':
print('成功')
else:
print('失败')
def post_json(full_url, data, headers_dict):
try:
res3 = requests.post(full_url, data=data, headers=headers_dict)
print('POST 响应状态码', res3.status_code)
print('POST 响应头', res3.headers)
print('POST 响应结果', res3.text)
print('POST 响应时间', res3.elapsed.total_seconds(), '秒')
json_res3 = res3.json()
print('POST 响应结果', json_res3)
return json_res3
except Exception as e:
print('post_json错误')
url = 'http://localhost:8888'
path = '/login02'
full_url = url + path
data = {"username": "zhangshan", "password": "123456"}
data = json.dumps(data)
headers_dict = {'content_type': 'application/json'} # json 格式
res3 = post_json(full_url, data, headers_dict)
if res3['checkstatus'] == 'on':
print('成功')
else:
print('失败')
5.封装成类
类中有四个方法
import json
import requests
class Httprequests():
def get(self, full_url, headers_dict):
# try 抛出异常
try:
res = requests.get(full_url, headers=headers_dict, )
print('GET 响应状态码', res.status_code)
print('GET 响应头', res.headers)
print('GET 响应结果', res.text)
print('GET 响应时间', res.elapsed.total_seconds(), '秒')
json_res = res.json()
print('GET 响应结果', json_res)
return json_res
except Exception as e:
print('get错误')
def get_queries(self, full_url, params_dict, headers_dict):
# try 抛出异常
try:
res1 = requests.get(full_url, params=params_dict, headers=headers_dict, )
print('GET 响应状态码', res1.status_code)
print('GET 响应头', res1.headers)
print('GET 响应结果', res1.text)
print('GET 响应时间', res1.elapsed.total_seconds(), '秒')
json_res1 = res1.json()
print('GET 响应结果', json_res1)
return json_res1
except Exception as e:
print('get错误')
def post_forms(self, full_url, data, headers_dict):
try:
res2 = requests.post(full_url, data=data, headers=headers_dict)
print('POST 响应状态码', res2.status_code)
print('POST 响应头', res2.headers)
print('POST 响应结果', res2.text)
print('POST 响应时间', res2.elapsed.total_seconds(), '秒')
json_res2 = res2.json()
print('POST 响应结果', json_res2)
return json_res2
except Exception as e:
print('post_forms 错误')
def post_json(self, full_url, data, headers_dict):
try:
res3 = requests.post(full_url, data=data, headers=headers_dict)
print('POST 响应状态码', res3.status_code)
print('POST 响应头', res3.headers)
print('POST 响应结果', res3.text)
print('POST 响应时间', res3.elapsed.total_seconds(), '秒')
json_res3 = res3.json()
print('POST 响应结果', json_res3)
return json_res3
except Exception as e:
print('post_json错误')
obj = Httprequests() # 实例化对象 类名()
url = 'http://localhost:8888'
path = '/book_list'
full_url = url + path
headers_dict = {}
res = obj.get(full_url, headers_dict) # 通过实例化的对象.
# 通过业务状态码判断是否成功
if res['error_code'] == 0:
print('成功')
else:
print('失败')
obj1 = Httprequests() # 实例化对象 类名()
url = 'http://localhost:8888'
path = '/book_info'
full_url = url + path
params_dict = {'bookname': '软件测试', 'checkstatus': 'on'}
headers_dict = {}
res1 = obj1.get_queries(full_url, params_dict, headers_dict) # 通过实例化的对象.
# 通过业务状态码判断是否成功
if res1['error_code'] == 0:
print('成功')
else:
print('失败')
obj2 = Httprequests() # 实例化对象 类名()
url = 'http://localhost:8888'
path = '/login01'
full_url = url + path
data = {"username": "zhangshan", "password": "123456"}
headers_dict = {'content_type': 'application/x-www-form-urlencoded'} # forms格式
res2 = obj2.post_forms(full_url, data, headers_dict)
if res2['checkstatus'] == 'on':
print('成功')
else:
print('失败')
obj3 = Httprequests() # 实例化对象 类名()
url = 'http://localhost:8888'
path = '/login02'
full_url = url + path
data = {"username": "zhangshan", "password": "123456"}
data = json.dumps(data)
headers_dict = {'content_type': 'application/json'} # json 格式
res3 = obj3.post_json(full_url, data, headers_dict)
if res3['checkstatus'] == 'on':
print('成功')
else:
print('失败')