RequestsはエレガントでシンプルなpythonHTTPライブラリです。実際、pythonにはurllibなどのネットワークにアクセスするための組み込みのリソースモジュールがありますが、requestsほどシンプルでエレガントではなく、多くの実用的な機能がありません。次のインターフェーステストの学習と実際の戦闘は、リクエストライブラリと密接に関連しています。
リクエストの公式ドキュメント:https://2.python-requests.org/en/master/次に、最も人気のあるリクエストがインターフェーステストに使用されます
Requestsは、ほぼすべてのHTTPリクエスト構築メソッドと、送信されたリクエストの構成をカスタマイズするためのパラメーターを渡すメソッドを提供します。さまざまな異なるリクエストシナリオを処理するために使用できます。
pipコマンドはリクエストをインストールします。
pip install requests
getリクエストを送信する
import requestsr = requests.get('https://api.github.com/events')
リクエストにデータパラメータを追加し、POSTリクエストを送信します
import requestsr = requests.post('http://httpbin.org/post', data = {'key':'value'})
リクエストにデータパラメータを追加し、プットリクエストを送信します
import requestsr = requests.put('http://httpbin.org/put', data = {'key':'value'})
削除リクエストを送信する
import requestsr = requests.delete('http://httpbin.org/delete')
ヘッドリクエストを送信する
mport requestsr = requests.head('http://httpbin.org/get')
オプションリクエストを送信
import requestsr = requests.options('http://httpbin.org/get')
リクエスト関数を直接使用してさまざまなメソッドを渡すこともできます。たとえば、このメソッドを使用してgetリクエストを送信します。
import requestsrequests.request("get", "http://www.baidu.com")
以下のパラメーターはすべてオプションのパラメーターですが、リクエストに追加のカスタマイズが必要な場合は、以下のパラメーターが必要です。
- ヘッダーパラメータ、dictを渡すことによるカスタムリクエストヘッダー
import requests
url = 'https://api.github.com/some/endpoint'
headers = {'user-agent': 'my-app/0.0.1'}
r = requests.get(url, headers=headers)
- dataパラメータは、フォームとしてエンコードされたデータシートを送信します
-
-
ペイロード={'key1':'value1'、'key2':'value2'}
-
r = requests.post(“ http://httpbin.org/post”、data =payload)
-
print(r.text)
{ … “ form”:{ “ key2”:“ value2”、“ key1” :“ value1” }、… }
- files参数,上传文件,dict格式。
- ```
- >>> url = 'http://httpbin.org/post'
- >>> files = {'file': open('report.xls', 'rb')}
- >>> r = requests.post(url, files=files)
- >>> r.text
{
...
"files": {
"file": "<censored...binary...data>"
},
...
}
注:ファイルをバイナリモードで開くことをお勧めします。これは、RequestsがContent-Lengthヘッダーを提供しようとする可能性があるためです。その場合、この値はファイルのバイト数に設定されます。ファイルをテキストモードで開くと、エラーが発生する場合があります。
- タイムアウトパラメータは、タイムアウト時間(秒)を設定します。その後、応答の待機を停止します。
-
-
requests.get('http://github.com'、timeout = 0.001)
トレースバック(最後の最後の呼び出し):requests.exceptions.Timeout:HTTPConnectionPool(host ='github.com'
、port = 80):リクエストがタイムアウトしました。(タイムアウト= 0.001)
注意:timeout 仅对连接过程有效,与响应体的下载无关。 timeout 并不是整个下载响应的时间限制,而是如果服务器在 timeout 秒内没有应答,将会引发一个异常(更精确地说,是在 timeout 秒内没有从基础套接字上接收到任何字节的数据时),如果不设置 timeout,将一直等待。
- allow_redirects参数
- 控制是否启用重定向,bool类型,选择True为启用,选择False为禁用
- ```
- import requests
- >>> r = requests.get('http://github.com', allow_redirects=False)
- >>> r.status_code
301
- プロキシパラメータ
- プロキシ、dict形式を設定し、キー値は選択されたプロトコルです。httpリクエストとhttpsリクエストにそれぞれプロキシを設定できます。
-
- import requests
proxies = { 'http':'http://10.10.1.10:3128'、'https':'http://10.10.1.10:1080'、} requests.get('https://api.github .com / events'、proxies = proxys)
- verify参数可以传入bool值或者string,默认为True。
如果设置为False的即为忽略对SSL证书的验证;反之就是需要做验证;如果传入值为string的话,代表指定本地的证书作为客户端证书。
- 从本地传入证书
- ```
- import requests>>> requests.get('https://github.com', verify='/path/to/certfile')
- SSL証明書の検証を無視する
-
- インポートリクエスト>>>requests.get('https://kennethreitz.org'、verify = False)
另外三个重要参数json、cookies、auth则会在后面的章节进行详细的介绍。
##
接口请求断言是指在发起请求之后,对返回的响应内容去做判断,用来查看是否响应内容是否与规定的返回值相符。
在发起请求后,我们使用一个变量r存储响应的内容,也就是Response对象。
インポートリクエスト
r = requests.get('http://httpbin.org/get')
print®
<Response[200]>
インポートリクエスト
r= requests.get('http://httpbin.org/get')
print®
<Response [200]>
Response对象有很多功能强大的方法可以调用,比如直接获取响应头,获取Unicode编码后的响应内容,获取二进制的响应内容,获取原始的响应内容等等。
- 获得响应头
- ```
- >>> r.headers
- {'Date': 'Sun, 05 Apr 2020 16:38:09 GMT', \
- 'Content-Type': 'application/json', \
- 'Content-Length': '308', 'Connection': 'keep-alive',\
- 'Server': 'gunicorn/19.9.0', \
- 'Access-Control-Allow-Origin': '*', \
- 'Access-Control-Allow-Credentials': 'true'}
- エンコードされた応答値を取得します
-
-
print(r.text)
- {{
- 「args」:{}、
- "データ": ""、
- 「ファイル」:{}、
- "形": {
-
"hogwarts": [
-
"a",
-
"b",
-
"c"
-
]
- }、
- 「ヘッダー」:{
-
"Accept": "*/*",
-
"Accept-Encoding": "gzip, deflate",
-
"Content-Length": "32",
-
"Content-Type": "application/x-www-form-urlencoded",
-
"Host": "httpbin.org",
-
"User-Agent": "python-requests/2.22.0",
-
"X-Amzn-Trace-Id": "Root=1-5e8a01e3-0913fca09ac605ccc911ccde"
- }、
- 「json」:null、
- 「起源」:「113.118.101.232」、
- 「url」:「http://httpbin.org/post」
- }
还可以使用r.raw获得原始响应内容,r.content获得二进制的响应内容,另外还有编码为json格式的响应内容,会在后面的章节进行详述。
本周霍格沃兹测试学院测试公开课,@飞儿 @AD 老师 将在16日、17日连续两天带你快速掌握“最火的 Requests 库使用 + 接口测试实战技能 + 最流行的 Allure 测试报告框架”,助你实现职场进阶。
立即扫码报名,锁定听课名额!点击「阅读原文」可查看课前准备
[原文链接](https://mp.weixin.qq.com/s?__biz=MzU3NDM4ODEzMg==&mid=2247493530&idx=1&sn=d963d309a8bccac17df604638b9c2111&chksm=fd318551ca460c470f59594a8e648e7edc71f90183d81abe1b756dd63d83f3f1e9ea2ec413d1#rd)
[更多技术文章分享](https://qrcode.ceba.ceshiren.com/link?name=article&project_id=qrcode&from=bokeyuan×tamp=1650434543)