• 使用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'  
    ...  
  • 相关阅读:
    LVS安装配置
    Ansible自动化运维工具的使用
    DHCP中继配置
    简单爬虫
    zlib1.2.8 编译小记
    varnish 4.0编译安装小记
    imdisk命令行使用及配置
    How to say all the keyboard symbols in English and Chinese
    qwt6在Windows下Qt5的编译,安装,初步使用
    4MLinux7.0 服务器配置详解 别名TheSSS
  • 原文地址:https://www.cnblogs.com/dancesir/p/7550161.html
Copyright © 2020-2023  润新知