美文网首页
HTTP接口测试 | 如何使用Python中的Requests库

HTTP接口测试 | 如何使用Python中的Requests库

作者: 金融测试民工 | 来源:发表于2020-02-14 11:26 被阅读0次

         我们接着上一篇的内容,这篇将讲完如何使用Python中的Requests库进行基础的HTTP接口测试。

    Cookie

        如果某个响应中包含一些 cookie,你可以快速查看它们:

    url ='http://example.com/some/cookie/setting/url'

    r = requests.get(url)

    >>> r.cookies['example_cookie_name']                    //'example_cookie_value'

        要想发送你的cookies到服务器,可以使用 cookies 参数:

    url ='http://httpbin.org/cookies'

    cookies = dict(cookies_are='working')

    r = requests.get(url, cookies=cookies)

    >>> r.text                                                        //'{"cookies": {"cookies_are": "working"}}'

        Cookie 的返回对象为 RequestsCookieJar,它的行为和字典类似,但接口更为完整,适合跨域名跨路径使用。你还可以把 Cookie Jar 传到 Requests 中:

    jar = requests.cookies.RequestsCookieJar()

    jar.set('tasty_cookie','yum', domain='httpbin.org', path='/cookies')

    jar.set('gross_cookie','blech', domain='httpbin.org', path='/elsewhere')

    url ='http://httpbin.org/cookies'

    r = requests.get(url, cookies=jar)

    >>> r.text                                                            //'{"cookies": {"tasty_cookie": "yum"}}'

    设置超时时间

        你可以告诉 requests 在经过以 timeout 参数设定的秒数时间之后停止等待响应。基本上所有的生产代码都应该使用这一参数。如果不使用,你的程序可能会永远失去响应:

    >>>requests.get('http://github.com', timeout=0.001)

    Traceback (most recent call last):

    File"<stdin>", line 1,in

    requests.exceptions.Timeout:HTTPConnectionPool(host='github.com', port=80): Request timed out. (timeout=0.001)

    注意

        timeout 仅对连接过程有效,与响应体的下载无关。 timeout 并不是整个下载响应的时间限制,而是如果服务器在 timeout 秒内没有应答,将会引发一个异常(更精确地说,是在timeout 秒内没有从基础套接字上接收到任何字节的数据时)If no timeout is specified explicitly, requests do not time out.

    重定向与请求历史

        默认情况下,除了 HEAD, Requests 会自动处理所有重定向。可以使用响应对象的 history 方法来追踪重定向。Response.history 是一个 Response 对象的列表,为了完成请求而创建了这些对象。这个对象列表按照从最老到最近的请求进行排序。如果你使用的是GET、OPTIONS、POST、PUT、PATCH 或者 DELETE,那么你可以通过 allow_redirects 参数禁用重定向处理:

    r = requests.get('http://github.com', allow_redirects=False)

    >>> r.status_code                                                //301

    >>> r.history                                                        //[]    

        如果你使用了 HEAD,你也可以启用重定向。

    其他错误与异常

        遇到网络问题(如:DNS 查询失败、拒绝连接等)时,Requests 会抛出一个 ConnectionError 异常。

        如果 HTTP 请求返回了不成功的状态码, Response.raise_for_status() 会抛出一个 HTTPError 异常。

        若请求超时,则抛出一个 Timeout 异常。

        若请求超过了设定的最大重定向次数,则会抛出一个 TooManyRedirects 异常。

        所有Requests显式抛出的异常都继承自 requests.exceptions.RequestException 。

    相关文章

      网友评论

          本文标题:HTTP接口测试 | 如何使用Python中的Requests库

          本文链接:https://www.haomeiwen.com/subject/jnwkfhtx.html