インターフェイスオートメーションのpython 17-マルチパート/フォームデータフォームの送信

序文

基準ケースへの公式文書のmultipart / form-data形式は比較的簡単ですが、遭遇した実際の状況は、より多くの方法Benpianマルチパート/フォームデータフォームの送信、非画像のアップロードを説明するために複雑になります

禅は、バグを提出します

マルチパート/フォームデータ:1.禅の場合、手動で提出バグ、キャプチャビューのContent-Typeにバグの参照を提出

Webフォームの内側2.ビューのパラメータの詳細

塗りつぶしパラメータ

値の引数に対応する値は、Webフォームを参照して、パラメータは、本明細書辞書フォーマットとして、ビューのWebフォームに辞書名に対応するキーは=「ここでパラメータ」に相当することに留意されたいです

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 =「データ/アップロード/ 201712分の1 / 072254170557cdn.png」この画像はアドレス挙げ画像上にあるフォトインタフェースが戻りアドレス(相対パス)が存在する場合

参照コード

1.multipart /フォームデータ、ここでデータ転送パラメータである(ファイル上のファイルのパラメータをアップロードする)
2.ない頭部ここでのContent-Type追加する:マルチパート/フォーム-データを、このパラメータは文句を言うでしょう

# 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

おすすめ

転載: www.cnblogs.com/yoyoketang/p/8001633.html
おすすめ