Pytest-multipart/form-data表单/图片类格式接口请求
Python实现Cmultipart/form-data表单类接口请求,
需要安装插件 pip install requests-toolbelt==0.9.1
请求表单类接口,实现如下:
from requests_toolbelt import MultipartEncoder from ke16.xadmin_login import xadmin_login from lxml import etree import requests import re def add_student(s): url = "接口地址" r1 = s.get(url)
#获取from表单的token信息
token = re.findall("name='csrfmiddlewaretoken' value='(.+?)' />", r1.text)
m = MultipartEncoder( fields={ "csrfmiddlewaretoken":token[0], "student_id":"test_00001", "name":"demo1", "age":"22", "score":"99", "_save":"" } ) r2 = s.post(url, data=m, headers={"content-type":m.content_type}) #解析页面元素,html解析 r3 = s.get("表单列表页面地址") #定位元素 x = '//*[@id="changelist-form"]/div[1]/table/tbody/tr[1]/td[2]/a' demo = etree.HTML(r3.text) nodes = demo.xpath(x) t = nodes[0].text print(t) assert nodes[0].text == "test_00001" return r2 if __name__ == '__main__': #先登录 s = requests.Session() xadmin_login(s) add_student(s)
提交图片接口,实现如下:
from ke16.xadmin_login import xadmin_login from requests_toolbelt import MultipartEncoder import requests import re def add_png(s): url = "上传图片地址" r1 = s.get(url) token = re.findall("name='csrfmiddlewaretoken' value='(.+?)' />", r1.text) m = MultipartEncoder( fields={ "csrfmiddlewaretoken":token[0], "title":"test0001", "image":["test222.jpg",open(r"图片路径/.png","rb"),"image/jpeg"], "files":["test1111.jpg",open(r"附件路径/.png","rb"),"application/octet-stream"], "_save":"" } ) r2 = s.post(url,data=m, headers={"Content-Type":m.content_type}) #boundary=----WebKitFormBoundary7AvqDZPQjdcCqbfC headers自动生成参数 if __name__ == '__main__': s = requests.Session() xadmin_login(s) add_png(s)