Vorwort
Zusammenfassung verschiedener Möglichkeiten zur Überprüfung der zurückgegebenen Validierungsergebnisse
Die Umgebung erfordert,
dass Python größer oder gleich Version 3.8 ist (Versionen niedriger als Python3.8 werden nicht unterstützt).
Pytest ist größer oder gleich 7.2.0
pip install Plugin, neueste Version v1.1.9
pip install pytest-yaml-yoyo
Die Version v1.1.9 hat die folgenden Optimierungen vorgenommen
- 1.validate fügt das Textschlüsselwort hinzu, um den gesamten Textinhalt abzurufen
- 2. Use-Case-Layer-API und Testcase-Layer-Validierungsüberprüfungsoptimierung, um die vorherigen Fehler zu beheben
- 3. Die Validierungsprüfungsmethode ist flexibler und unterstützt die Zeichenlänge und enthaltene Zeichen für die Überprüfung des Typs int
- 4. Log-Protokolldateioptimierung, behalten Sie nur die neuesten 5 Protokolldateien
Validierung validieren
Der Wert aus dem Antwortobjektattribut kann die folgenden Objekte sein [Statuscode, URL, OK, Header, Cookies, JSON, Codierung, Text]
Darunter können die Objekte Status_code, URL, OK, Codierung und Text direkt herausgenommen werden
# 作者 上海-悠悠 微信:283340479
test_yoyo:
name: get
request:
method: GET
url: http://httpbin.org/get
validate:
- eq: [status_code, 200]
- eq: [url, http://httpbin.org/get]
- eq: [ok, True]
- str_eq: [encoding, 'None']
- contains: [text, args]
Unter diesen versteht man unter Text den gesamten von der Erfassungsschnittstelle zurückgegebenen Text, also den r.text
erfassten Textinhalt
Protokoll ausführen
2023-03-21 21:16:09 [INFO]: validate 校验内容-> [{'eq': ['status_code', 200]}, {'eq': ['url', 'http://httpbin.org/get']},
{'eq': ['ok', True]}, {'str_eq': ['encoding', 'None']}, {'contains': ['text', 'args']}]
2023-03-21 21:16:09 [INFO]: validate 校验结果-> eq: [200, 200]
2023-03-21 21:16:09 [INFO]: validate 校验结果-> eq: [http://httpbin.org/get, http://httpbin.org/get]
2023-03-21 21:16:09 [INFO]: validate 校验结果-> eq: [True, True]
2023-03-21 21:16:09 [INFO]: validate 校验结果-> str_eq: [None, None]
2023-03-21 21:16:09 [INFO]: validate 校验结果-> contains: [{
"args": {},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Host": "httpbin.org",
"User-Agent": "python-requests/2.18.4",
"X-Amzn-Trace-Id": "Root=1-6419ae16-35a5895d42d28afb50ec9390"
},
"origin": "104.168.170.139",
"url": "http://httpbin.org/get"
}
, args]
Header und Cookies validieren
Die Überprüfung von Headern und Cookies kann über den jmespath-Wertausdruck in headers.xx
Form und cookies.xx
erfolgen
Anwendungsbeispiel
# 作者 上海-悠悠 微信:283340479
test_yoyo:
name: get
request:
method: GET
url: http://httpbin.org/get
validate:
- eq: [headers."Content-Type", application/json]
- eq: [cookies, {}]
Da der „Content-Type“ des Werts Sonderzeichen enthält, wird ein Syntaxproblem gemeldet, wenn der jmespath-Ausdruck einen Wert erhält und dieser in doppelte Anführungszeichen gesetzt wirdheaders."Content-Type"
Überprüfen Sie den Körper des JSON-Typs
Wenn der zurückgegebene Text im JSON-Format vorliegt, gibt es zwei Wertesyntaxen
- JSONPATH-Wertsyntax, z. B
$.code
.:$..token
usw. - jmespath-Wertsyntax, wie zum Beispiel:
body.code
usw.
Anwendungsbeispiel
# 作者 上海-悠悠 微信:283340479
test_yoyo:
name: get
request:
method: GET
url: http://httpbin.org/get
validate:
- eq: [body.url, http://httpbin.org/get]
- eq: [body.headers.Host, httpbin.org]
- eq: [$..Host, httpbin.org]
Protokoll ausführen
2023-03-21 21:13:25 [INFO]: validate 校验内容-> [{'eq': ['body.url', 'http://httpbin.org/get']},
{'eq': ['body.headers.Host', 'httpbin.org']}, {'eq': ['$..Host', 'httpbin.org']}]
2023-03-21 21:13:25 [INFO]: validate 校验结果-> eq: [http://httpbin.org/get, http://httpbin.org/get]
2023-03-21 21:13:25 [INFO]: validate 校验结果-> eq: [httpbin.org, httpbin.org]
2023-03-21 21:13:25 [INFO]: validate 校验结果-> eq: [httpbin.org, httpbin.org]
Körper regelmäßige Extraktion
Einige zurückgegebene Körper liegen nicht im JSON-Format vor und können die reguläre Extraktion unterstützen, was unsere häufig verwendete reguläre Syntax ist: xxx(.+?)xxx
oderxxx(.*?)xxx
Anwendungsbeispiel
# 作者 上海-悠悠 微信:283340479
test_yoyo:
name: get
request:
method: GET
url: http://httpbin.org/get
validate:
- eq: ['"url": "(.+?)"', "http://httpbin.org/get"]
Protokoll ausführen
2023-03-21 21:19:49 [INFO]: validate 校验内容-> [{'eq': ['"url": "(.+?)"', 'http://httpbin.org/get']}]
2023-03-21 21:19:49 [INFO]: validate 校验结果-> eq: [http://httpbin.org/get, http://httpbin.org/get]
andere Behauptungen
Zusammenfassung der Assertionsmethoden einiger digitaler Typen:
eq: Strikte Prüfung, Zeichenfolgen- und Zahlentyp
str_eq: Beurteilung gleich nach Konvertierung in Zeichenfolge
enthält: Enthält Zahlen, kann Zahlen unterstützen 12345 enthält 123
len_eq: Beurteilung der Zeichenfolge oder Zahlenlänge
gt: Beurteilung der Zahl mehr als das
Anwendungsbeispiel
# 作者 上海-悠悠 微信:283340479
test_assert:
-
name: get
request:
method: GET
url: http://httpbin.org/get
validate:
- eq: ['123', '123']
- str_eq: [123, '123']
- constains: [123, '12']
- constains: ['123', '12']
- constains: [['hello', 'world'], 'hello']
- len_eq: [123, 3]
- len_eq: ['123', 3]
- len_eq: ['abc', 3]
- gt: [123, 100]
Die Validierungsmethoden, die validieren, können unterstützen
Die Validierungsmethoden, die validieren, können unterstützen
Komparator | Abkürzung | Funktion |
---|---|---|
gleich | „eq“, „gleich“, „gleich“ | gleich |
weniger als | „lt“, „less_than“ | weniger als |
less_or_equals | „le“, „less_or_equals“ | Gleich oder kleiner als |
größer als | „gt“, „größer_als“ | mehr als die |
größer_oder_gleich | „ge“, „greater_or_equals“ | größer als oder gleich wie |
nicht gleich | „ne“, „not_equal“ | Nicht gleichzusetzen mit |
string_equals | „str_eq“, „string_equals“ | String gleich konvertieren |
length_equal | „len_eq“, „length_equal“ | Gleiche Länge |
Länge_größer_als | „len_gt“, „length_greater_than“ | Länge größer als |
length_greater_or_equals | „len_ge“, „length_greater_or_equals“ | Länge größer oder gleich |
Länge_weniger_als | „len_lt“, „length_less_than“ | Länge kleiner als |
length_less_or_equals | „„len_le“, „length_less_or_equals“ | Länge kleiner oder gleich |
enthält | check_value enthält Expect_value | |
enthalten_von | „expect_value“ enthält „check_value“. | |
type_match | Typ-Typ-Übereinstimmung | |
regex_match | Reguläres Matching re.match(expect_value, check_value) | |
beginnt mit | Zeichenfolge beginnt mit xx | |
endet mit | Die Zeichenfolge endet mit xx |