专栏首页从零开始学自动化测试python接口自动化15-multipart/form-data表单提交

python接口自动化15-multipart/form-data表单提交

前言 multipart/form-data这种格式官方文档给的参考案例比较简单,实际情况中遇到会比较复杂,本篇讲解multipart/form-data的表单如何提交,非图片上传 一、 禅道提交bug 1.以禅道提交bug为参考案例,手动操作一次提交bug,抓包查看Content-Type: multipart/form-data

2.在WebForms里面查看参数详情

二、参数填写 1.注意了,这里的参数对应为字典格式,字典的key对应WebForms里查看的name="这里的参数",value对应WebForms查看的value值

```
f = {
    "product": "1",
    "module": "0",
    "project": "",
    "openedBuild[]": "trunk",
    "assignedTo": "admin",
    "type": "codeerror",
    "os": "all",
    "browser": "all",
    "color": "",
    "title": "yoyoketang-这是一个bug描述1122",
    "severity": "3",
    "pri": "0",
    "steps": '<p>[步骤]</p>\
            <p>1、第一步点</p>\
            <p>2、第二步点</p>\
            <p>3、点三步点</p>\
            <p>[结果]</p>\
            <p><img src="data/upload/1/201712/072254170557cdn.png" alt="" /></p>\
            <p>[期望]</p>',
    "story": "0",
    "task": "0",
    "mailto[]": "",
    "keywords": "",
    "files[]": "",
    "labels[]": "",
    "uid": "5a2955c884f98",
    "case": "0",
    "caseVersion": "0",
    "result": "0",
    "testtask": "0"
    }
```

2.如果有图片上传,这里<img src="data/upload/1/201712/072254170557cdn.png" 这个图片地址就是上一篇讲到的上传图片接口返回的图片地址(相对路径) 三、参考代码 1.multipart/form-data这里传的是data参数(上一篇文件上传是files参数) 2.这里头部不要加Content-Type: multipart/form-data这个参数,会报错

```
# coding:utf-8
import requests

base = 'http://127.0.0.1:81/'  # 禅道的服务器地址

loginUrl = base+"/zentao/user-login.html"

h = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0",
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
    "Accept-Language": "zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3",
    "Accept-Encoding": "gzip, deflate",
    "Referer": "http://127.0.0.1/zentao/user-login.html",
    # "Cookie":  # 头部没登录前不用传cookie,因为这里cookie就是保持登录的
    "Connection": "keep-alive",
    "Content-Type": "application/x-www-form-urlencoded",
    }

body = {"account":"admin",
        "password":"e10adc3949ba59abbe56e057f20f883e",
        "keepLogin[]":"on",
        "referer":"http://127.0.0.1/zentao/my/"
        }

s = requests.session()  # 保持会话
r = s.post(loginUrl, data=body, headers=h)
print r.content  # 打印结果看到location='http://127.0.0.1/zentao/my/'说明登录成功了

# 提交bug
url1 = "http://127.0.0.1:81/zentao/bug-create-1-0-moduleID=0.html"
f = {
    "product": "1",
    "module": "0",
    "project": "",
    "openedBuild[]": "trunk",
    "assignedTo": "admin",
    "type": "codeerror",
    "os": "all",
    "browser": "all",
    "color": "",
    "title": "yoyoketang-这是一个bug描述1122",
    "severity": "3",
    "pri": "0",
    "steps": '<p>[步骤]</p>\
            <p>1、第一步点</p>\
            <p>2、第二步点</p>\
            <p>3、点三步点</p>\
            <p>[结果]</p>\
            <p><img src="data/upload/1/201712/072254170557cdn.png" alt="" /></p>\
            <p>[期望]</p>',
    "story": "0",
    "task": "0",
    "mailto[]": "",
    "keywords": "",
    "files[]": "",
    "labels[]": "",
    "uid": "5a2955c884f98",
    "case": "0",
    "caseVersion": "0",
    "result": "0",
    "testtask": "0"
    }
r = s.post(url1, data=f)
print r.content
```

本文分享自微信公众号 - 从零开始学自动化测试(yoyoketang)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-12-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • python测试开发django-64.序列化(Serializer)

    REST framework中的serializers与Django的Form和ModelForm类非常像。我们提供了一个Serializer类,它为你提供了强...

    上海-悠悠
  • python测试开发django-59.restful接口开发

    REST 不是什么具体的软件或者代码,而是一种思想。现在流行前后端分离开发项目,一般用 json 来交换数据。 相信写过模板的同学都知道,只要哪怕页面中的数据有...

    上海-悠悠
  • pytest文档19-doctest测试框架

    doctest从字面意思上看,那就是文档测试。doctest是python里面自带的一个模块,它实际上是单元测试的一种。 官方解释:doctest 模块会搜索那...

    上海-悠悠
  • bootstrap table x-editable select2——带图标的选择

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hotqin888/article/det...

    hotqin888
  • AngularJS2+调用原有的js脚本(AngularJS脚本跟本地原有脚本之间的关系)

    俺踏月色而来
  • ssm中使用hibernate-validator验证BO

    目前比较流行的验证做法:前端jquery-form-validate + 后端hibernate-validate 在pom中添加相关jar: ? sprin...

    风间影月
  • Ajax(20171102)

    天天_哥
  • IE9上传图片报错:Posted content type isn't multipart/form-data

    经过分析,在IE10、IE11下,HTTP请求头部已经包含了Content-Type: multipart/form-data;boundary=AaB03x部...

    城市中的游牧民族
  • phpunit-单元测试神器

    在我们开发的时候,测试是必不可少的东西,那么有个好的测试工具才能让你测试的效率提升,现在就介绍下最近我发现的单元测试工具-phpunit吧.

    仙士可
  • 多模态+Recorder︱多模态循环网络的图像文本互匹配

    图像文本匹配,顾名思义,就是度量一幅图像和一段文本的相似性,该技术是多个模式识别任务的核心算法。例如,在图像文本跨模态检索任务中,当给定查询文本,需要依据图像文...

    素质

扫码关注云+社区

领取腾讯云代金券