zoukankan      html  css  js  c++  java
  • 使用Python的requests库作接口测试——对HTTP动词的支持

    Requests提供了几乎所有HTTP动词的功能:GET,OPTIONS, HEAD,POST,PUT,PATCH和DELETE。

    动词GET-查看提交信息

    HTTP GET是一个幂等的方法,从给定的URL返回一个资源。因而,当你试图从一个web位置获取数据之时,你应该使用这个动词。

    举个栗子:从Github上获取关于一个特定commit的信息

    >>> import requests  
    >>> r = requests.get('https://api.github.com/repos/kennethreitz/requests/git/commits/a050faf084662f3a352dd1a941f2c7c9f886d4ad')  

    我们应该确认Github是否正确响应。如果正确响应,我们想弄清响应内容是什么类型的。

    >>> if (r.status_code == requests.codes.ok):  
    ...     print r.headers['content-type']  
    ...  
    application/json; charset=utf-8  

    可见,GitHub返回了JSON数据,非常好,这样就可以使用 r.json 方法把这个返回的数据解析成Python对象。

    # 将json对象转成python字典  
    >>> commit_data = r.json()  
    # 获取所有键  
    >>> print commit_data.keys()  
    [u'committer', u'author', u'url', u'tree', u'html_url', u'sha', u'parents', u'me  
    ssage']  
    # 打印commiter键的内容  
    >>> print commit_data[u'committer']  
    {u'date': u'2012-05-10T18:10:50Z', u'name': u'Kenneth Reitz', u'email': u'me@ken  
    nethreitz.com'}  
    # 打印message键的内容  
    >>> print commit_data[u'message']  
    makin' history   

    OPTIONS动词-查看接口方法

    如果服务器正确实现了OPTIONS,那么服务器应该在响应头中返回允许用户使用的HTTP方法。

    >>> verbs = requests.options('http://a-good-website.com/api/cats')  
    >>> print verbs.headers['allow']  
    GET,HEAD,POST,OPTIONS  
     

    但是通常好多服务器并未实现OPTIONS方法。这是一个恼人的疏忽,但没关系,那我们可以使用枯燥的文档来查看接口支持的方法。

    POST动词-发表评论

    发表评论,这里需要身份验证。

    >>> from requests.auth import HTTPBasicAuth
    >>> auth = HTTPBasicAuth('fake@example.com', 'not_a_real_password')
    >>> r = requests.post(url=url, data=body, auth=auth)
    >>> r.status_code
    201
    >>> content = r.json()
    >>> print(content[u'body'])
    Sounds great! I'll get right on it.

    PATCH动词-编辑评论

    >>> print(content[u"id"])  
    5804413  
    >>> body = json.dumps({u"body": u"Sounds great! I'll get right on it once I feed my cat."})  
    >>> url = u"https://api.github.com/repos/kennethreitz/requests/issues/comments/5804413"  
    >>> r = requests.patch(url=url, data=body, auth=auth)  
    >>> r.status_code  
    200  

    DELETE动词-删除评论

    >>> r = requests.delete(url=url, auth=auth)  
    >>> r.status_code  
    204  
    >>> r.headers['status']  
    '204 No Content' 

    HEAD动词-只查看响应的头部

    >>> r = requests.head(url=url, auth=auth)  
    >>> print r.headers  
    ...  
    'x-ratelimit-remaining': '4995'  
    'x-ratelimit-limit': '5000'  
    ...  
  • 相关阅读:
    从零开始入门 K8s | 应用编排与管理
    209. Minimum Size Subarray Sum
    208. Implement Trie (Prefix Tree)
    207. Course Schedule
    203. Remove Linked List Elements
    183. Customers Who Never Order
    182. Duplicate Emails
    181. Employees Earning More Than Their Managers
    1261. Find Elements in a Contaminated Binary Tree
    1260. Shift 2D Grid
  • 原文地址:https://www.cnblogs.com/dancesir/p/7550161.html
Copyright © 2011-2022 走看看