Detaillierte Erläuterung des Moduls -requests zum Testen der Schnittstellenautomatisierung

1. Hintergrund der Anfragen

Requests erbt alle Funktionen von urllib2. Requests unterstützt die Beibehaltung von HTTP-Verbindungen und das Zusammenlegen von Verbindungen, unterstützt die Verwendung von Cookies zur Aufrechterhaltung von Sitzungen, unterstützt das Hochladen von Dateien, unterstützt die automatische Ermittlung der Codierung von Antwortinhalten und unterstützt die automatische Codierung von internationalisierten URLs und POST-Daten.

Zweitens fordert Installation an


Installation mit pip: $ pip Installationsanforderungen

3. Verwendung von Anfragen

GET Anfrage

1. Grundlegende GET-Anfrage

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

2. Fügen Sie Header und Parameter hinzu

Wenn Sie Header hinzufügen möchten, können Sie den Parameter headers übergeben, um die Headerinformationen im Anforderungsheader zu erhöhen. Wenn Sie die Parameter in der URL übergeben möchten, können Sie den Parameter params verwenden.

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)# 查看响应码

Wenn Sie Text abrufen möchten, können Sie response.text verwenden. Wenn Sie Bilder / Dateien abrufen möchten, können Sie response.content verwenden.

POST-Methode

1. Grundlegende POST-Anfrage

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

2. Körper mit Parametern

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文件可以直接显示

Hinweis: Das
gedruckte Ergebnis erscheint chinesisch verstümmelt. Verwenden Sie json.dupms (Antwort, sure_ascii = False).

Session

Verwenden Sie "Sitzung" im Allgemeinen, um bestimmte Parameter bei Queranforderungen zu verwalten, z. B. den Zugriff auf andere Seiten nach der Anmeldung

# 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#/")

Angelegenheiten, die Aufmerksamkeit erfordern:

1. Wenn Sie Anforderungen zum Anfordern einer Schnittstelle verwenden, tritt ein Fehler auf, aber die Schnittstelle selbst ist kein Problem. Dies liegt daran, dass die Anforderungsparameter der Schnittstelle zwei Fälle haben: einfache Typen (im Allgemeinen weniger als 3) und komplexe Objekttypen.

Lösung: Definieren Sie die
einfachen Typen dieser beiden Parameter in Headern: headers = {"Content-Type": "application / x-www-form-urlencoded"}
komplexe Objekttypen: headers = {"Content-Type" : application / json}
2. Einige HTTPS-Anforderungen verfügen über
Lösungen zur Überprüfung von SSL-Zertifikaten : response = request.get (" https://www.baidu.com/ ", verify = False)

Viertens bittet um Erweiterung

1. Fügen Sie nach dem Fehlschlagen der Anforderung einen Wiederholungsmechanismus hinzu (wenn dies fehlschlägt, wird es dreimal wiederholt).

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

2. Verwenden Sie Grequests, um asynchrone Anforderungen zu implementieren

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. Benutzerdefinierte Cookies

Wir verwenden Sitzungsinstanzen, um Cookies zwischen Anfragen zu verwalten. In einigen besonderen Fällen müssen Sie jedoch benutzerdefinierte Cookies verwenden

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

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

4. Zählen Sie die Zeit, die eine API-Anforderung benötigt

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

5. Legen Sie das Anforderungszeitlimit fest

session.get(url, timeout=15)

6. Datei hochladen

Requests verwendet Dateien als Parameter, um das Senden von Dateidaten zu simulieren

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

V. Zusammenfassung

Wenn Sie der Meinung sind, dass dieser Artikel für Sie hilfreich ist, wenn Sie an Softwaretests, Schnittstellentests, automatisierten Tests und dem Austausch von Interviewerfahrungen interessiert sind, treten Sie bitte bei:

Technologiegruppe für Softwaretests: 695458161, die in der Gruppe verteilten kostenlosen Materialien sind die Essenz der mehr als zehnjährigen Testkarriere des Autors. Es gibt auch Kollegen, die gemeinsam Technologie austauschen.

Autor: Zhuge
Quelle: https: //www.cnblogs.com/csmashang/p/12713012.html
Original ist nicht einfach, herzlich willkommen auf Nachdruck, aber ohne Zustimmung Halt des Autors erklärte in diesem Abschnitt, der Original - Artikel-Link in der scheinbaren Position gegeben.

Ich denke du magst

Origin www.cnblogs.com/csmashang/p/12713012.html
Empfohlen
Rangfolge