接口自动化——其他类型请求体

一、常用接口请求体

类型 描述 content-type
JSON(JavaScript object notation) 轻量级的数据交换格式,最常见的一种类型 application/json
表单数据(form data) 以键值对的形式提交的数据 application/x-www-form-urlencoded
xml(extensible markup language) 常用的标记语言,常用于传递配置文件等数据 application/xmltext/xml
文件(file) 可以通过请求体上传文件数据,如图片、Excel。 上传文件的MIME类型,例如image/jpeg
纯文本(text) 纯文本数据,如发送邮件、消息等 text/plain
其他格式 二进制数据,protobuf等格式

二、文件上传

2.1、文件上传接口场景

  • 文件上传是一种常见的需要求,但是使用 html 中的 form 表单格式却不支持,
  • 提出了一种兼容此需求的 mime type。
  • 解决接口测试流程中文件上传的问题
    • 指定 name
    • 指定 filename
    • 指定 content-type

2.2、文件上传示例

def test_file_upload():
    url = "https://httpbin.ceshiren.com/post"
    proxies = {
        "http": "http://127.0.0.1:8888",
        "https": "http://127.0.0.1:8888"
    }
    with open("../../logs/2023-10-15.log", "rb") as f_obj:
        file = {"hogwarts": ("api.py", f_obj)}
        res = requests.post(url, files=file, proxies=proxies, verify=False)
        print(res.text)

image

三、form表单

3.1、什么是 FORM 请求

  • 数据量不大
  • 数据层级不深的情况
  • 通常以键值对传递

3.2、form表单使用示例

    def test_form_data(self):
        url = "https://httpbin.ceshiren.com/post"
        data = {"name": "钟离", "country": "璃月"}
        res = requests.post(url, data=data, proxies=self.proxies, verify=False)
        print(res.text)

image

四、xml请求体

4.1、xml数据解析

  • 数据保存:将复杂的xml或者json保存到文件模版中
  • 数据处理:
    • 使用mustache、freemaker等工具解析
    • 使用简单的字符串替换
    • 使用json、xml进行结构解析
  • 数据生成:输出最终结果

xml请求示例

    def test_with_xml(self):
        url = "https://httpbin.ceshiren.com/post"
        xml = """
        <?xml version='1.0' encoding='utf-8'?>
        <a>baidu.com</a>
        """
        header = {"Content-Type": 'application/xml'}
        res = requests.post(url, headers=header, data=xml, proxies=self.proxies, verify=False)
        print(res.text)

image