文档章节

Python接口自动化

o
 osc_bkdv2it5
发布于 2019/08/21 18:12
字数 1196
阅读 29
收藏 0

精选30+云产品,助力企业轻松上云!>>>

requests库

requests库介绍:

Requests是一个优雅而简单的Python HTTP库,专为人类而构建。(来自官方的介绍)

requests是一个很实用的Python HTTP客户端库,编写爬虫和测试服务器响应数据时经常会用到,对测试来说做接口测试会很方便。

request库使用

requests库安装:

requests是第三方的库,需要先安装 :pip3 install requests(python3版本)

requests源码

 1 def request(method, url, **kwargs):
 2     """Constructs and sends a :class:`Request <Request>`.
 3 
 4     :param method: method for the new :class:`Request` object.
 5     :param url: URL for the new :class:`Request` object.
 6     :param params: (optional) Dictionary, list of tuples or bytes to send
 7         in the query string for the :class:`Request`.
 8     :param data: (optional) Dictionary, list of tuples, bytes, or file-like
 9         object to send in the body of the :class:`Request`.
10     :param json: (optional) A JSON serializable Python object to send in the body of the :class:`Request`.
11     :param headers: (optional) Dictionary of HTTP Headers to send with the :class:`Request`.
12     :param cookies: (optional) Dict or CookieJar object to send with the :class:`Request`.
13     :param files: (optional) Dictionary of ``'name': file-like-objects`` (or ``{'name': file-tuple}``) for multipart encoding upload.
14         ``file-tuple`` can be a 2-tuple ``('filename', fileobj)``, 3-tuple ``('filename', fileobj, 'content_type')``
15         or a 4-tuple ``('filename', fileobj, 'content_type', custom_headers)``, where ``'content-type'`` is a string
16         defining the content type of the given file and ``custom_headers`` a dict-like object containing additional headers
17         to add for the file.
18     :param auth: (optional) Auth tuple to enable Basic/Digest/Custom HTTP Auth.
19     :param timeout: (optional) How many seconds to wait for the server to send data
20         before giving up, as a float, or a :ref:`(connect timeout, read
21         timeout) <timeouts>` tuple.
22     :type timeout: float or tuple
23     :param allow_redirects: (optional) Boolean. Enable/disable GET/OPTIONS/POST/PUT/PATCH/DELETE/HEAD redirection. Defaults to ``True``.
24     :type allow_redirects: bool
25     :param proxies: (optional) Dictionary mapping protocol to the URL of the proxy.
26     :param verify: (optional) Either a boolean, in which case it controls whether we verify
27             the server's TLS certificate, or a string, in which case it must be a path
28             to a CA bundle to use. Defaults to ``True``.
29     :param stream: (optional) if ``False``, the response content will be immediately downloaded.
30     :param cert: (optional) if String, path to ssl client cert file (.pem). If Tuple, ('cert', 'key') pair.
31     :return: :class:`Response <Response>` object
32     :rtype: requests.Response
33 
34     Usage::
35 
36       >>> import requests
37       >>> req = requests.request('GET', 'https://httpbin.org/get')
38       <Response [200]>
39     """
40 
41     # By using the 'with' statement we are sure the session is closed, thus we
42     # avoid leaving sockets open which can trigger a ResourceWarning in some
43     # cases, and look like a memory leak in others.
44     with sessions.Session() as session:
45         return session.request(method=method, url=url, **kwargs)
View Code

 其中,month主要是用get和post

requests模块发送请求有data、json、params三种携带参数的方法。

params在get请求中使用,data、json在post请求中使用。

'''
requests--get方法
r=requests.get('https://movie.douban.com/')
print(r.status_code) #查看状态码
print(r.text) #查看响应内容
print(r.content.decode('utf-8')) #查看字节流(二进制)
print(r.url) #查看请求地址
print(r.encoding) #查看字符编码
print(r.cookies) #查看cookie
print(r.headers) #查看请求头信息
# 当返回的响应格式是json时,可以用r.json())

# 这里有两种方式,一种是直接用请求地址,另一种是用参数的方式传递parames
url='https://movie.douban.com/subject_search?search_text=%E5%93%AA%E5%90%92&cat=1002'
url1='https://movie.douban.com/subject_search?search_text=哪吒&cat=1002'
paydata={'search_text':'哪吒','cat':1002}
r=requests.get(url1,params=paydata)
'''

 

post方法:

def post(url, data=None, json=None, **kwargs):
    r"""Sends a POST request.

    :param url: URL for the new :class:`Request` object.
    :param data: (optional) Dictionary, list of tuples, bytes, or file-like
        object to send in the body of the :class:`Request`.
    :param json: (optional) json data to send in the body of the :class:`Request`.
    :param \*\*kwargs: Optional arguments that ``request`` takes.
    :return: :class:`Response <Response>` object
    :rtype: requests.Response
    """

    return request('post', url, data=data, json=json, **kwargs)
url='https://testyyfax8511.yylending.com/'
login_heades={
    'Referer': 'https://testyyfax8511.yylending.com/web/login.html?_z=/web/user/index.html',
    'user-agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36'}
login_data={
    'account':'18885110001',
    'password':'204Ofz2Lrfyng'}
test_login=requests.post(url+'node_api/user.do?fn=login',headers=login_heades,data=login_data)
print(test_login.text)
print(json.dumps(test_login.json(),indent=True,ensure_ascii=False))

当请求参数为form表单是,用data;当请求参数为josn格式时,用json;

当响应格式是json时,用json查看会更合适(查看响应字段的时候,用json取值更方便)

 

request中超时情况的处理

#客户端发送到服务端的请求,当服务端响应的时间比较长是,可以加上等待时间
r=requests.get('http://www.baidu.com',timeout=6)

requests中安全证书的处理思路

当请求需要安全证书的时候,可以通过忽略安全证书的方式处理或者带上安全证书的路径,推荐用忽略的方式。

r=requests.get('http://www.baidu.com',verify=False)

requests中cookie的处理

第一种方法是直接在请求中带上具体的cookie的值;

第二种方法,可以写一个方法,返回登录后的cookie,然后在需要cookies的接口中带上

requests中对token的处理

处理方法同cookie是一样的思路

requests对session会话对象的处理??

session,保存了客户端与服务器之间的通信信息。能够跨请求保持某些参数,比如它会在同一个session实例发出的所有请求之间保持cookie

 

requests对文件上传的处理

requests对文件下载的处理

 

 

 

 

 

 

 

 

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
接口自动化测试 python+request+excel(一)

注:   学习python自动化测试,需要先学习python基础,主要还是多敲代码,多联系,孰能生巧,你也会是一名合格的程序员   python基础学习:     http://c.biancheng.net/python/   ...

osc_g5vuxtsj
04/16
40
0

一、前言 有人喜欢创造世界,他们做了开发者;有的人喜欢开发者,他们做了测试员。什么是软件测试?软件测试就是一场本该在用户面前发生的灾难提前在自己面前发生了,这会让他们生出一种救世...

二次元BUG
06/14
0
0
用python做自动化测试--序

几年来,都有个想法:写个《用Python做自动化测试》的系列文章。把自己的经验和大家共享,和大家多交流,同时总结下自己掌握的东西。但苦于一直忙,其实准确点的说是自己懒,迟迟没有开始。我...

方程无解
2012/10/04
0
0
Python自动化脚本Python接口自动化从设计到开发视频教程测试框架实战与自动化进阶

Python自动化脚本Python接口自动化从设计到开发视频教程测试框架实战与自动化进阶高级软件测试,性能测试,功能测试,自动化测试,接口测试,移动端测试,手机测试,WEB测试,渗透测试,测试...

osc_nbqoh20k
2019/11/30
3
0
软件全栈测试积累

网址:持续更新中 Python: Python第三方离线库下载 Python文件处理 Python面向对象 Python装饰器 Python错误和异常 Python必学模块 Python进阶 Python正则表达式 Python走进Requests库 Pyth...

osc_dp4o1kdn
2018/05/25
2
0

没有更多内容

加载失败,请刷新页面

加载更多

Java知识回顾-基础知识(1)

面向对象和面向过程的区别 1 面向过程性能较高(面向过程语言大多是直接编译成计算机可读的机械码可直接运行) 2 面向对象易维护,易复用,易扩展(因为有封装,继承,多态可设计低耦合系统),面向对...

心田已荒
34分钟前
11
0
Vimium不使用鼠标离开地址栏的方法

使用chrome 的 Vimium 扩展也有很长一段时间了,最大的好处是可以在浏览器使用 vim 下的热键,告别鼠标和触控板也能愉快玩耍。 虽然大部分时间都使用cmd+O打开 URL或者历史,但有时候还是要用...

FalconChen
39分钟前
27
0
数据库周刊31丨openGauss 正式开源;7月数据库排行榜发布;PG解决社保问题;mysqlbinlog解析……

摘要:墨天轮数据库周刊第31期发布啦,每周1次推送本周数据库相关热门资讯、精选文章、干货文档。本周分享 华为openGauss 正式开源;7月数据库排行榜发布;浙江移动国产数据库AntDB迁移;抢鲜...

墨天轮小助手
42分钟前
10
0
婚礼行业小程序新玩法

现在婚礼行业越来越吃香,随之而来的婚庆公司、个人工作室都涌入市场。消费者可选择的越来越多,货比三家。婚礼公司都在绞尽脑汁加大推广力度,做各种优惠活动,来吸引消费者,提升销量。今天...

LOVEer1
43分钟前
9
0
Linux Ubuntu 14 Audit 系统审计服务

一、概述 系统等保要求,必须做系统审计服务,审计的目的是基于事先配置的规则生成日志,记录可能发生在系统上的事件,这里直接使用第三方插件 Audit,不用系统自带的审计服务日志。 (如需要...

华山猛男
54分钟前
22
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部