pytest + yaml Framework-22.validate bietet mehrere Möglichkeiten, die zurückgegebenen Ergebnisse zu überprüfen

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.texterfassten 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.xxForm und cookies.xxerfolgen

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.: $..tokenusw.
  • jmespath-Wertsyntax, wie zum Beispiel: body.codeusw.

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(.+?)xxxoderxxx(.*?)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

Supongo que te gusta

Origin blog.csdn.net/qq_27371025/article/details/129775425
Recomendado
Clasificación