requests---requests請求表單

   在作接口測試的時候咱們會遇到過須要填寫表單的形式,那麼如何經過requests進行請求呢? 這裏須要引入新的python的第3方庫requests-toolbelthtml

requests-toolbelt

一、安裝python

pip install requests-toolbelt

官方文檔:https://pypi.org/project/requests-toolbelt/數據庫

源碼:windows

這裏包含了許多方法,咱們慢慢的進行了解瀏覽器

# -*- coding: utf-8 -*-
"""
requests-toolbelt
=================

See http://toolbelt.rtfd.org/ for documentation

:copyright: (c) 2014 by Ian Cordasco and Cory Benfield
:license: Apache v2.0, see LICENSE for more details
"""

from .adapters import SSLAdapter, SourceAddressAdapter
from .auth.guess import GuessAuth
from .multipart import (
    MultipartEncoder, MultipartEncoderMonitor, MultipartDecoder,
    ImproperBodyPartContentException, NonMultipartContentTypeException
    )
from .streaming_iterator import StreamingIterator
from .utils.user_agent import user_agent

__title__ = 'requests-toolbelt'
__authors__ = 'Ian Cordasco, Cory Benfield'
__license__ = 'Apache v2.0'
__copyright__ = 'Copyright 2014 Ian Cordasco, Cory Benfield'
__version__ = '0.9.1'
__version_info__ = tuple(int(i) for i in __version__.split('.'))

__all__ = [
    'GuessAuth', 'MultipartEncoder', 'MultipartEncoderMonitor',
    'MultipartDecoder', 'SSLAdapter', 'SourceAddressAdapter',
    'StreamingIterator', 'user_agent', 'ImproperBodyPartContentException',
    'NonMultipartContentTypeException', '__title__', '__authors__',
    '__license__', '__copyright__', '__version__', '__version_info__',
]

這裏咱們會用到MultipartEncoder方法post

MultipartEncoder上傳文件用法

  import requests
  from requests_toolbelt import MultipartEncoder

  encoder = MultipartEncoder({'field': 'value',
                                    'other_field', 'other_value'})
  r = requests.post('https://httpbin.org/post', data=encoder,
                          headers={'Content-Type': encoder.content_type})

MultipartEncoder填寫表格用法

from requests_toolbelt import MultipartEncoder
import requests

m = MultipartEncoder(fields={'field0': 'value', 'field1': 'value'})

r = requests.post('http://httpbin.org/post', data=m,
                  headers={'Content-Type': m.content_type})

小試牛刀

這裏安靜經過舉個小栗子來更加理解requests-toolbelt的用法,這裏經過禪道提bug的接口測試

一、抓取禪道提bug的接口,分析參數數據ui

填寫bug列表,打開Fiddler進行抓包分析數據url

經過抓包數據分析,能夠看出來這是個multipart/form-data的數據類型,下面是填寫的參數信息,老規矩,一個個寫下來(這裏不清楚那個是必填項或者是須要的內容)。spa

二、導入requests-toobelt使用MultipartEncoder方法

參照源碼方式,一個個參數進行添加,而後修改標題和修改bug內容

# coding:utf-8
import requests
from requests_toolbelt import MultipartEncoder
# 接口地址
url = 'http://demo.zentao.net/bug-create-39-0-moduleID=0.html'
# 請求頭
headers = {
    "User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36",
    "Cookie":"__cfduid=dcc14bd65a47b718842d4b412e2d517721545125741; Hm_lvt_731bb611021e8720f1fc3035dfd2a44f=1572415581; Hm_lpvt_731bb611021e8720f1fc3035dfd2a44f=1572415585; zentaosid=n6m4ua9k7b2c0hte58mqfi2lc0; lang=zh-cn; device=desktop; theme=default; UM_distinctid=16e1b4fca6c56a-0522f3f1a973da-5f123917-100200-16e1b4fca6d67f; CNZZDATA4553360=cnzz_eid%3D557018590-1572412770-null%26ntime%3D1572412770; lastProduct=39; windowWidth=1366; windowHeight=625; preBranch=0; preProductID=39; bugModule=0; qaBugOrder=id_desc"
}
# 請求參數信息
data = MultipartEncoder(
    fields=[
        ('product',"40"),
        ('branch','0'),
        ('module','0'),
        ('project','448'),
        ('openedBuild[]','trunk'),
        ('assignedTo',''),
        ('deadline',''),
        ('type','codeerror'),
        ('os','windows'),    # 操做系統
        ('browser','all'),    # 瀏覽器
        ('title','這是bug的名稱'),
        ('color',''),
        ('severity','3'),   # 嚴重級
        ('pri','3'),    # 優先級
        ('steps','<p>[步驟]</p>\n<p>測試步驟第一步</p>\n<br />\n<p>[結果]</p>這裏測試步驟第2步\n<br />\n<p>[指望]</p>\n<br />'),
        ('story',''),
        ('task',''),
        ('oldTaskID','0'),
        ('mailto[]','dev1'),
        ('contactListMenu',''),
        ('keywords',''),
        ('status','active'),
        ('labels[]',''),
        ('files[]',''),
        ('uid','5db92b80efe7w'),
        ('case','0'),
        ('caseVersion','0'),
        ('caseVersion','0'),
        ('result','0'),
        ('testtask','0'),
            ],
    )
r = requests.post(url,headers={'Content-Type': data.content_type},data=data)

三、查看是否請求成功

具體的應該去數據庫裏看看數據有沒有添加成功,這裏安靜模擬的接口,直接查看頁面發現已經添加成功了

 

 

經過一個小栗子讓咱們熟悉了requests-toolbelt的用法,固然不單單隻有這一種方法,其餘的方法小夥伴們能夠本身摸索下,本身嘗試寫下

 

 

若是安靜寫的內容對您有幫助,能夠右下角點個關注,持續更新;若是哪裏寫的有不對的地方,能夠下方留言告訴安靜,看到後第一時間回覆哦~~

相關文章
相關標籤/搜索