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)

 

posted @ 2021-05-26 21:00  小哈别闹  阅读(340)  评论(0编辑  收藏  举报