用python來驗證接口正確性,主要流程有4步:node
1 設置urlpython
2 設置消息頭json
3 設置消息體bash
4 獲取響應app
5 解析相應函數
6 驗證數據post
Content-Type的格式有四種:分別是application/x-www-form-urlencoded(這也是默認格式)、application/json、text/xml以及multipart/form-data格式。ui
(一)application/x-www-form-urlencoded數據格式url
請看代碼:spa
datas = {'parameter1':'12345','parameter2':'23456'} r = requests.post('http://example.com',data=datas) print(r.content) print(r.status_code)
解說:Reqeusts支持以application/x-www-form-urlencoded數據格式發送post請求,只須要將請求的參數構形成一個字典,而後傳給requests.post()的data參數便可。
(二)application/json數據格式
application/json格式的請求頭是指用來告訴服務端post過去的消息主體是序列化後的 JSON 字符串。
請看帶代碼:
url = 'http://www.example/post' s = json.dumps({'key1': 'value1', 'key2': 'value2'}) r = requests.post(url, data=s) print (r.text)
區別:
或者把xml做爲一個文件來傳輸:xml = """my xml""" headers = {'Content-Type': 'application/xml'} requests.post('http://www.example.com', data=xml, headers=headers)
import requests def request_ws(request): with open(archivo_request,"r") as archivo: request_data = archivo.read() target_url = "http://127.0.0.1:8000/?wsdl" headers = {'Content-type':'text/xml'} data_response = requests.post(target_url, data=request_data, headers=headers)
(四)multipart/form-data數據格式
除了傳統的application/x-www-form-urlencoded表單,咱們另外一個常常用到的是上傳文件用的表單,這種表單的類型爲multipart/form-data,
multipart/form-data主要用於文件上傳,當咱們使用它時,必須讓 form表單的enctype 等於 multipart/form-data
直接來看一個請求示例,主要:
請看代碼(實現上傳本地的test.txt文件):
import requests
files = {"file": open("C:/Users/Administrator/Desktop/test.txt", "rb")}
r = requests.post("http://httpbin.org/post", files=files)
print(r.text)
具體請看實際例子:
import requests import json # 設置URL url = "http://demo.9meikf.cn/usystem/auto/getAnswer.do" # 設置消息頭 headers = { "Cookie":"JSESSIONID=EA01FF2B025861F39E29712C97F7DF69;CASTGC=TGT-136-bLQMf0CAikK4BGaydOfIeKd6tWpZQEznJ2ZWdcVl9ofI4LiaQb-cas01.example.org", "Content-Type":"application/json" } # 設置消息體 data = {"companyId":"48622", "nodeId":6, "question":"不須要", "templateId":"c6f5ad67fc2c11e8a11800163e086942"} # 獲取相應 response=requests.post(url,headers=headers,data=json.dumps(data)) print("Status code:",response.status_code) print(response.text) # 解析相應 info=response.json() # 驗證數據 assert str(info['answer'])=='reject'