接口自动化测试 (三)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!\n"
  },
  "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!\n",
  "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"
}

原文地址:https://www.cnblogs.com/zhang-jun-jie/p/9273594.html

时间: 2024-08-07 23:55:08

接口自动化测试 (三)request.post的相关文章

接口自动化测试 unittest+request+excel(八)

完善接口自动化测试框架,加入日志模块 #!/usr/bin/env python3 # -*-coding:utf-8-*- # __author__: hunter import logging import os import time class Logger: def __init__(self, loggername): # 创建一个logger self.logger = logging.getLogger(loggername) self.logger.setLevel(loggi

接口自动化测试(三)

一. 定义公共的请求方法 如下图所示,同一个模块,只是请求数据和返回数据不同,http请求的发送过程是完全相同的 对于不同模块,只是请求的url.请求方法.请求数据和返回数据不同,http请求的过程也是完全相同的 这样就可以将发送请求的方法写成一个类或函数,供不同的测试用例调用 具体的实现是 import requests class MyRequests: def send_request(self, method, url, **kwargs): res = requests.request

python接口自动化测试(三)-requests.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:

python接口自动化测试三:代码发送HTTP请求

get请求: 1.get请求(无参数): 2.get请求(带参数): 接口地址:http://japi.juhe.cn/qqevaluate/qq 返回格式:json 请求方式:get post 请求示例:http://japi.juhe.cn/qqevaluate/qq?key=您申请的appKey&qq=295424589 接口备注:根据传入的参数 qq 号码和您申请的 appKey 测试 qq 的吉凶 请求参数说明(入参) : 名称    必填    类型      说明 key    

从0开始学习接口自动化测试(三)

感兴趣的小伙伴可以加入QQ群:556029945 仓储部分开发 ?和数据库交互,涉及到数据源的配置,为了小伙伴测试方便,这里采用H2数据库,以免有的小伙伴把代码写完了,却还要单独去安装如mysql,oracle的数据库,还要去写sql建表格,包括分享给他人都觉得不方便,以至于分外麻烦,这里我们就采用内存数据库,即启即用. ?1. 在pom中再次添加相关的依赖 <dependency> <groupId>com.h2database</groupId> <artif

接口自动化测试 unittest+request+excel(五)

封装操作Excel方法,后续功能进行直接调用 #!/usr/bin/env python3 # -*-coding:utf-8-*- # __author__: hunter import xlrd class HandleExcel: """封装操作Excel的方法""" def __init__(self, file='D:/hunter_/interfaceTest/interface/tool/demo2.xlsx', sheet_id=

接口自动化测试 unittest+request+excel(踩‘坑’)

通过运行主函数,返回的参数,报json解析错误 正常的返回参数,应该如图 造成这个原因的是: python从excel中解析出来的数据类型不是字典,是字符串,所以无法传递给requests当做请求参数 需用用json.loads()转成字典格式,然后进行传参 对python从Excel中解析出来的数据类型进行测试一波 #!/usr/bin/env python3 # -*-coding:utf-8-*- # __author__: hunter import xlrd import json i

接口自动化测试 unittest+request+excel(二)

上一节是接口测试单条测试get/post,加上封装. 通过学习到unittest,使用其中的unittest.TestCase和Testsuit #!/usr/bin/env python3 # -*-coding:utf-8-*- # __author__: hunter import unittest from conn.run_demo import RunMain # 上一节写的类,进行调用 import HTMLTestRunner import json class TestMeth

【python3+request】python3+requests接口自动化测试框架实例详解教程

转自:https://my.oschina.net/u/3041656/blog/820023 前段时间由于公司测试方向的转型,由原来的web页面功能测试转变成接口测试,之前大多都是手工进行,利用postman和jmeter进行的接口测试,后来,组内有人讲原先web自动化的测试框架移驾成接口的自动化框架,使用的是java语言,但对于一个学java,却在学python的我来说,觉得python比起java更简单些,所以,我决定自己写python的接口自动化测试框架,由于本人也是刚学习python,

APP接口自动化测试JAVA+TestNG(三)之HTTP接口测试实例

转载自:http://www.cnblogs.com/findyou/p/5388853.html 说明,本文为学习参考,将于一段时间后删除. 前言    前两篇普及相关基础知识后,本篇主要对举例对国家气象局接口自动化测试进行讲解(Get请求及结果断言),以达到自动化测试入门目的,除了前两篇的一些了解外,需要有一定的JAVA知识(HTTP相关). 目录 3.1 HTTP接口(GET)测试实例 3.1.1 待测接口说明 3.1.2 新建JAVA工程 1.工程目录说明 2.Common.java源码