インターフェース自動化テストの-requestsモジュールの詳細な説明

1.依頼の背景

リクエストはurllib2のすべての機能を継承します。リクエストは、HTTP接続保持と接続プーリングをサポートし、Cookieを使用してセッションを維持し、ファイルのアップロードをサポートし、応答コンテンツのエンコーディングの自動決定をサポートし、国際化されたURLとPOSTデータの自動エンコーディングをサポートします。

次に、インストールを要求します


pipでインストール$ pip install requests

3.リクエストの使用

GETリクエスト

1.基本的なGETリクエスト

response = requests.get("http://www.baidu.com/")
#也可以这样写
response = requests.request("get","http://www.baidu.com/")

2.ヘッダーとパラメーターを追加する

ヘッダーを追加する場合は、headersパラメータを渡して、リクエストヘッダーのヘッダー情報を増やすことができます。URLでパラメーターを渡す場合は、paramsパラメーターを使用できます。

key = {'key': 'CC'}
headers = {
    "User-Agent": "Mozilla/5.0"}
response = requests.get("http://www.baidu.com/s?", params=key, headers=headers)
print(response.text)# 查看响应内容,response.text 返回的是Unicode格式的数据
print(response.content)# 查看响应内容,response.content返回的字节流数据
print(response.status_code)# 查看响应码

テキストを取得したい場合は、response.textを使用できます。画像やファイルを取得したい場合は、response.contentを使用できます。

POSTメソッド

1.基本的なPOSTリクエスト

response = requests.post("http://www.baidu.com/",data = data)

2.パラメータを持つボディ

formdata = {
    "type": "AUTO",
    "doctype": "json",
    "key": "www",
    "ue": "UTF-8",
}
url = "http://auto-installment/v1/loan-credit-check"
response = requests.post(url,data = data,headers=headers)

print(response.text)#显示返回结果
print(response.json())# 如果是json文件可以直接显示

注:
印刷された結果は中国語で文字化けして表示されます。json.dupms(応答、ensure_ascii = False)を使用して解決してください

セッション

通常、Sessionを使用して、ログイン後の他のページへのアクセスなど、クロスリクエスト中に特定のパラメーターを維持します。

# 1. 创建session对象,可以保存Cookie值
session = requests.session()

# 2. 需要登录的用户名和密码
data = {"username": "mxxxx", "password": "1233444"}

# 3. 发送附带用户名和密码的请求,并获取登录后的Cookie值,保存在ssion里
session.post("https://www.jianshu.com/sign_in", data=data)

# 4. ssion包含用户登录后的Cookie值,可以直接访问那些登录后才可以访问的页面
response = session.get("https://www.jianshu.com/writer#/")

注意が必要な事項:

1.リクエストを使用してインターフェースをリクエストすると、エラーが発生しますが、インターフェース自体は問題ではありません。これは、インターフェイスのリクエストパラメータに2つのケースがあるためです:単純型(通常は3未満)と複雑なオブジェクト型。

ソリューション:
ヘッダーでこれら2つのパラメーターの単純なタイプを定義します:headers = {"Content-Type": "application / x-www-form-urlencoded"}
複雑なオブジェクトタイプ:headers = {"Content-Type" :application / json}
2.一部のHTTPSリクエストにはSSL証明書の検証
ソリューションがあります:response = requests.get( " https://www.baidu.com/"、verify = False)

4、拡張を要求する

1.リクエストが失敗した後、再試行メカニズムを追加します(失敗した場合、3回再試行します)

request_retry = requests.adapatrs.HTTPAdapaters(max_retries=3)
session.mount('https://',request_retry)  

2. grequestsを使用して非同期リクエストを実装する

urls = [
    'http://www.url1.com',
    'http://www.url2.com',
    'http://www.url3.com',
    'http://www.url4.com',
    'http://www.url5.com',
]
resp = (grequests.get(u) for u in urls)
grequests.map(resp)

3.カスタムCookie

リクエスト間のCookieを維持するためにSessionインスタンスを使用しますが、一部の特別なケースでは、カスタムCookieを使用する必要があります

我们使用Session实例来保持请求之间的cookies,但是有些特殊情况,需要使用自定义的cookies
# 自定义cookies
cookie = {'guid':'5BF0FAB4-A7CF-463E-8C17-C1576fc7a9a8','uuid':'3ff5f4091f35a467'}

session.post('http://', cookies=cookie)

4. APIリクエストに要した時間をカウントする

session.get(url).elapsed.total_seconds() 

5.リクエストのタイムアウトを設定する

session.get(url, timeout=15)

6.ファイルのアップロード

リクエストはファイルをパラメータとして使用して、ファイルデータの送信をシミュレートします

file = {'file':open('test.bmp','rb')}   #rb表示用二进制格式打开指定目录下的文件,且用于只读
r =requests.post('http://',files=file)
print(r.text)

V.まとめ

この記事が役立つと思う場合、ソフトウェアテスト、インターフェーステスト、自動テスト、面接経験の交換に興味がある場合は、参加してください。

ソフトウェアテストテクノロジーグループ:695458161、グループで配布される無料の資料は、10年以上にわたるテストのキャリアのエッセンスです。テクノロジーを一緒に交換する仲間もいます。

著者:諸葛
出典ます。https://www.cnblogs.com/csmashang/p/12713012.html
元は容易ではないが、転載を歓迎しますが、著者の同意をキープすることなく、見かけ上の位置に元の記事ページへのリンクを指定して、このセクションで宣言しました。

おすすめ

転載: www.cnblogs.com/csmashang/p/12713012.html