接口自动化测试 request.post

Posted zhang-jun-jie

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了接口自动化测试 request.post相关的知识,希望对你有一定的参考价值。

上一节介绍了  requests.get()  方法的基本使用,本节介绍  requests.post()  方法的使用:

 

本文目录:

一、方法定义

二、post方法简单使用

  1、带数据的post

  2、带header的post

  3、带json的post

  4、带参数的post

  5、普通文件上传

  6、定制化文件上传

  7、多文件上传

 

一、方法定义:

1、到官方文档去了下requests.post()方法的定义,如下:

技术分享图片

 

2、源码:

技术分享图片

 

3、常用返回信息:

技术分享图片

 

二、post方法简单使用:

 1、带数据的post:

技术分享图片
# -*- coding:utf-8 -*-
import requests
import json

host = "http://httpbin.org/"
endpoint = "post"
url = ‘‘.join([host,endpoint])
data = {‘key1‘:‘value1‘,‘key2‘:‘value2‘}

r = requests.post(url,data=data)
#response = r.json()
print (r.text)
技术分享图片

输出:

技术分享图片
{
  "args": {}, 
  "data": "", 
  "files": {}, 
  "form": {
    "key1": "value1", 
    "key2": "value2"
  }, 
  "headers": {
    "Accept": "*/*", 
    "Accept-Encoding": "gzip, deflate", 
    "Connection": "close", 
    "Content-Length": "23", 
    "Content-Type": "application/x-www-form-urlencoded", 
    "Host": "httpbin.org", 
    "User-Agent": "python-requests/2.18.1"
  }, 
  "json": null, 
  "origin": "183.14.133.88", 
  "url": "http://httpbin.org/post"
}
技术分享图片

 

2、带header的post:

技术分享图片
# -*- coding:utf-8 -*-
import requests
import json

host = "http://httpbin.org/" endpoint = "post" url = ‘‘.join([host,endpoint]) headers = {"User-Agent":"test request headers"} # r = requests.post(url) r = requests.post(url,headers=headers) #response = r.json()
技术分享图片

输出:

技术分享图片
{
  "args": {}, 
  "data": "", 
  "files": {}, 
  "form": {}, 
  "headers": {
    "Accept": "*/*", 
    "Accept-Encoding": "gzip, deflate", 
    "Connection": "close", 
    "Content-Length": "0", 
    "Host": "httpbin.org", 
    "User-Agent": "test request headers"
  }, 
  "json": null, 
  "origin": "183.14.133.88", 
  "url": "http://httpbin.org/post"
}
技术分享图片

 

3、带json的post:

技术分享图片
# -*- coding:utf-8 -*-
import requests
import json

host = "http://httpbin.org/"
endpoint = "post"

url = ‘‘.join([host,endpoint]) data = { "sites": [ { "name":"test" , "url":"www.test.com" }, { "name":"google" , "url":"www.google.com" }, { "name":"weibo" , "url":"www.weibo.com" } ] } r = requests.post(url,json=data) # r = requests.post(url,data=json.dumps(data)) response = r.json()
技术分享图片

输出:

技术分享图片
{
  "args": {}, 
  "data": "{"sites": [{"url": "www.test.com", "name": "test"}, {"url": "www.google.com", "name": "google"}, {"url": "www.weibo.com", "name": "weibo"}]}", 
  "files": {}, 
  "form": {}, 
  "headers": {
    "Accept": "*/*", 
    "Accept-Encoding": "gzip, deflate", 
    "Connection": "close", 
    "Content-Length": "140", 
    "Content-Type": "application/json", 
    "Host": "httpbin.org", 
    "User-Agent": "python-requests/2.18.1"
  }, 
  "json": {
    "sites": [
      {
        "name": "test", 
        "url": "www.test.com"
      }, 
      {
        "name": "google", 
        "url": "www.google.com"
      }, 
      {
        "name": "weibo", 
        "url": "www.weibo.com"
      }
    ]
  }, 
  "origin": "183.14.133.88", 
  "url": "http://httpbin.org/post"
}
技术分享图片

 

4、带参数的post:

技术分享图片
# -*- coding:utf-8 -*-
import requests
import json

host = "http://httpbin.org/"
endpoint = "post"

url = ‘‘.join([host,endpoint])
params = {‘key1‘:‘params1‘,‘key2‘:‘params2‘}

# r = requests.post(url)
r = requests.post(url,params=params)
#response = r.json()
print (r.text)
技术分享图片

输出:

技术分享图片
{
  "args": {
    "key1": "params1", 
    "key2": "params2"
  }, 
  "data": "", 
  "files": {}, 
  "form": {}, 
  "headers": {
    "Accept": "*/*", 
    "Accept-Encoding": "gzip, deflate", 
    "Connection": "close", 
    "Content-Length": "0", 
    "Host": "httpbin.org", 
    "User-Agent": "python-requests/2.18.1"
  }, 
  "json": null, 
  "origin": "183.14.133.88", 
  "url": "http://httpbin.org/post?key2=params2&key1=params1"
}
技术分享图片

 

5、普通文件上传:

技术分享图片
# -*- coding:utf-8 -*-
import requests
import json

host = "http://httpbin.org/"
endpoint = "post"

url = ‘‘.join([host,endpoint]) #普通上传 files = { ‘file‘:open(‘test.txt‘,‘rb‘) } r = requests.post(url,files=files) print (r.text)
技术分享图片

输出:

技术分享图片
{
  "args": {}, 
  "data": "", 
  "files": {
    "file": "hello world!
"
  }, 
  "form": {}, 
  "headers": {
    "Accept": "*/*", 
    "Accept-Encoding": "gzip, deflate", 
    "Connection": "close", 
    "Content-Length": "157", 
    "Content-Type": "multipart/form-data; boundary=392865f79bf6431f8a53c9d56c62571e", 
    "Host": "httpbin.org", 
    "User-Agent": "python-requests/2.18.1"
  }, 
  "json": null, 
  "origin": "183.14.133.88", 
  "url": "http://httpbin.org/post"
}
技术分享图片

 

6、定制化文件上传:

技术分享图片
# -*- coding:utf-8 -*-
import requests
import json

host = "http://httpbin.org/"
endpoint = "post"

url = ‘‘.join([host,endpoint])
#自定义文件名,文件类型、请求头
files = {
        ‘file‘:(‘test.png‘,open(‘test.png‘,‘rb‘),‘image/png‘)
}

r = requests.post(url,files=files)
print (r.text)heman793
技术分享图片

输出比较在,就不帖了。

 

7、多文件上传:

技术分享图片
# -*- coding:utf-8 -*-
import requests
import json

host = "http://httpbin.org/"
endpoint = "post"

url = ‘‘.join([host,endpoint])
#多文件上传
files = [
    (‘file1‘,(‘test.txt‘,open(‘test.txt‘, ‘rb‘))),
    (‘file2‘, (‘test.png‘, open(‘test.png‘, ‘rb‘)))
    ]

r = requests.post(url,files=files)
print (r.text)
技术分享图片

输出上,太多内容,不帖了。

 

8、流式上传:

技术分享图片
# -*- coding:utf-8 -*-
import requests
import json

host = "http://httpbin.org/"
endpoint = "post"

url = ‘‘.join([host,endpoint])

#流式上传
with open( ‘test.txt‘ ) as f:
    r = requests.post(url,data = f)

print (r.text)
技术分享图片

输出:

技术分享图片
{
  "args": {}, 
  "data": "hello world!
", 
  "files": {}, 
  "form": {}, 
  "headers": {
    "Accept": "*/*", 
    "Accept-Encoding": "gzip, deflate", 
    "Connection": "close", 
    "Content-Length": "13", 
    "Host": "httpbin.org", 
    "User-Agent": "python-requests/2.18.1"
  }, 
  "json": null, 
  "origin": "183.14.133.88", 
  "url": "http://httpbin.org/post"
}
技术分享图片



以上是关于接口自动化测试 request.post的主要内容,如果未能解决你的问题,请参考以下文章

Flask 编写http接口api及接口自动化测试

接口自动化支持插件扩展,提供MQTT插件,MeterSphere开源持续测试平台v1.13.0发布

JMeter接口测试-模块控制器

接口中不需要登录的接口@base_request

接口测试

python接口自动化测试二:python代码实现接口测试