Python接口自动化中如何处理form-data格式的数据

我们在做自动化测试时,难免会遇到form-data格式的数据,我们经常遇到需要解析表单数据(form-data)的情况。form-data通常用于HTTP请求中,尤其是POST方法提交的数据。在本博客中,我们将探讨如何在Python中解析multipart/form-data类型的数据,并提供几个代码示例来详细说明这一过程。

FormData的数据在postman中是很容易请求的,直接选中form-data填写参数名和参数值就可以,但是python处理就没有那么直接了,需要对这种数据进行处理。
在这里插入图片描述
在Python中,我们需要先安装requests_toolbelt库,并从requests_toolbelt导入MultipartEncoder库
在这里插入图片描述
第一个问题就是请求头的 boundary 值问题,这是一个随机值
Content-Type: multipart/form-data; boundary=----WebKitFormBoundarytZTJQrWcjjcJIMVQ
我们要是想自己随机生成一个boundary,可以直接用下面的代码,先把你的请求参数转化成字典格式,为了给boundary提供参数,直接上代码:(记得把parameters 改成你自己的参数)

from requests_toolbelt import MultipartEncoder

class MultipartEncoderNew:
	def __init__(self):
	self.multipart_encoder = self.make_multipart_encode()
	
    def make_multipart_encode_fields(self):
        """
        用于生成multipart_encoder 的fields字段
        :return fields: multipart_encoder 的fields字段
        """
        parameters = {'data': {
            "username": "test",
            "password": "123456"}
        }
        fields = parameters
        if fields is None or fields == {}:
            return fields
        else:
            for item in fields.items():
                # 字典类型转为Json
                if isinstance(item[1], dict):
                    fields[item[0]] = json.dumps(item[1])
        return fields

    def make_multipart_encode(self, boundary=None):
        default_boundary = ''.join(random.sample(string.ascii_letters + string.digits, 30))
        multipart_encoder = MultipartEncoder(
            boundary=boundary if boundary else default_boundary,
            fields=self.make_multipart_encode_fields()
        )
        return multipart_encoder

if __name__ == '__main__':
    a = MultipartEncoderNew()
    print(a.make_multipart_encode())

# 直接打印出来的结果就是把你之前入的参数parameters转化成MultipartEncoder格式的数据了
#<MultipartEncoder: {'data': '{"username": "test", "password": "123456"}'}>

我们如何在接口中使用
图中是我自己的项目编写,仅供参考,主要是要注意header的“Content-Type"的传参还有接口请求的data的取值,大家结合自己的项目去填写就可以了
在这里插入图片描述
可以看到我的接口是可以请求通的
在这里插入图片描述

本文就暂时分享到这啦,如果对你有帮助可以点赞评论收藏哦~~~,后续有新的内容也会继续更新的,欢迎交流讨论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值