• 接口自动化测试 (三)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"
    }
    复制代码
  • 相关阅读:
    【NOI2008】志愿者招募
    【NOI2015】小园丁和老司机
    【TJOI2007】小朋友
    【HNOI2008】神奇的国度
    【CTSC2014】企鹅QQ
    【CQOI2014】通配符匹配
    【JSOI2008】火星人
    【SCOI2007】压缩
    【ZJOI2009】对称的正方形
    【LOJ#6066】同构子树
  • 原文地址:https://www.cnblogs.com/zhang-jun-jie/p/9273594.html
Copyright © 2020-2023  润新知