Über Schnittstellenautomatisierung, fortgeschrittene Fähigkeiten, die Sie kennen müssen – Schnittstellenautomatisierungsartefakt und fortgeschrittene Bedienung

1. Variablenextraktion und -referenz

Die Extraktion und Referenzierung von Variablen dient hauptsächlich der Lösung des Problems der Parameterabhängigkeit zwischen Schnittstellen .

Verwendungsszenario: Wenn die Parameter von Schnittstelle A einige von Schnittstelle B zurückgegebene Daten verwenden müssen, extrahieren Sie nach dem Anfordern von Schnittstelle B die Daten und speichern Sie sie zur Verwendung beim Anfordern von Schnittstelle A.

1. Variablenextraktion

Geben Sie im Anwendungsfallsatz oder in den Anwendungsfalldaten die zu extrahierenden Variablen über das Extraktionsfeld an.

Grammatik:

"extract": {    "Variablenname": ("Variablenspeicherebene", "Methode extrahieren", "Ausdruck extrahieren"), }

  • Variablenname :

Der Name der Variablen, die die Daten enthält

  • Variabler Speicherpegel :


EVN: globale Variable, EVN env in der Einstellungsdatei : lokale Variable (nur gültig für den aktuellen Anwendungsfallsatz): das env-Feld des Anwendungsfallsatzes

  • Extraktionsmethode :

Betreff: Regulärer Ausdruck zum Extrahieren
von Jsonpath: Extrahieren nach Jsonpath

Fall:

"extract": {
    # 通过jsonpath提取
   "token": ("env", "jsonpath", "$..token"),
    # 通过正则表达式提取
   'member_id': ("env", "re", r'"id":(.+?),')
}

2. Variablenreferenz

Variablenreferenzausdrücke:

$}

Zitierpriorität:

Zuerst wird auf die lokale Variable des Anwendungsfalls (die Variable in der Umgebung des Anwendungsfalls) verwiesen. Wenn die lokale Variable nicht vorhanden ist, wird auf die globale Variable (die in ENV in Setting.py gespeicherte Variable) verwiesen.

Wenn Sie automatisiertes Testen lernen möchten, empfehle ich Ihnen hier eine Reihe von Videos. Dieses Video kann als das erste Tutorial zum Testen von Schnittstellenautomatisierungen im gesamten Netzwerk an Station B bezeichnet werden. Gleichzeitig ist die Anzahl der Online-Benutzer gestiegen 1.000 erreicht, und es gibt Banknoten zum Sammeln und verschiedene Lu Dashen Technical Exchange: 798478386      

[Aktualisiert] Die detaillierteste Sammlung praktischer Tutorials zum automatisierten Testen von Python-Schnittstellen, die von Station B (der neuesten Version des tatsächlichen Kampfes) unterrichtet werden._哔哩哔哩_bilibili [Aktualisiert] Die detaillierteste Sammlung praktischer Tutorials zum automatisierten Testen von Python Von Station B (tatsächlicher Kampf) unterrichtete Schnittstellen (die neueste Version) verfügen über insgesamt 200 Videos, darunter: 1. [Schnittstellenautomatisierung] Die aktuelle Marktsituation für Softwaretests und die Fähigkeitsstandards von Testern. , 2. [Schnittstellenautomatisierung] Vollständige Kenntnisse der Requests-Bibliothek und der zugrunde liegenden Methodenaufruflogik, 3. [Schnittstellenautomatisierung] Schnittstellenautomatisierungskampf und die Anwendung regulärer Ausdrücke und JsonPath-Extraktoren usw. Weitere spannende Videos finden Sie unter das UP-Konto. https://www.bilibili.com/video/BV17p4y1B77x/?spm_id_from=333.337&vd_source=488d25e59e6c5b111f7a1a1a16ecbe9a

2. Anwendungsfallbehauptung

Für den Vergleich zwischen dem erwarteten Ergebnis und dem tatsächlichen Ergebnis des Testfalls ist ein Überprüfungsfeld in der API gekapselt. Sie müssen lediglich das erwartete Ergebnis, den tatsächlichen Ergebnisextraktionsausdruck und die Assertionsmethode in der Überprüfung definieren, um dies zu erreichen Geltendmachung des Anwendungsfalls!

1. Grundlegende Grammatik

verification = [
        [断言方式, 预期结果, 实际结果]
    ] 

2. Behauptungsmethode

Derzeit werden in apin zwei Assertionsmethoden unterstützt:

Gleichheit behaupten: Gl

Erwartete und tatsächliche Ergebnisse sind gleich

verification = [
        ['eq', 预期结果, 实际结果]
    ] 

Behauptung enthält: enthält

Tatsächliche Ergebnisse enthalten Inhalte der erwarteten Ergebnisse

verification = [
        ['contains', 预期结果, 实际结果]
    ] 

3. Erfassung tatsächlicher Ergebnisse

Was die tatsächliche Ergebnisextraktion der Behauptung betrifft, müssen Sie zum Extrahieren V{ {Ausdruck}} verwenden, und der Ausdruck unterstützt  zwei Extraktionsmethoden: jsonpath  und regulärer Ausdruck .

Extraktion regulärer Ausdrücke

# 通过正则表达式来提取实际结果中的msg字段。
verification = [
        ['eq', {'msg':"OK"}, {"msg": "V{
   
   {msg:'(.+?)'}}"}]
    ] 

Über jsonpath extrahieren

# 通过jsonpath来提取实际结果中的msg字段。
verification = [
        ['eq', {'msg':"OK"}, {"msg": 'V{
   
   {$..msg}}']
    ] 

4. Behauptung des HTTP-Statuscodes

Die beiden oben genannten Methoden können bereits die vom Ergebnis zurückgegebenen Daten extrahieren. Was ist also, wenn Sie den Statuscode der Schnittstellen-HTTP-Anfrage bestätigen möchten?

Apin bietet außerdem einen integrierten Feldnamen zur Darstellung des HTTP-Statuscodes.

# 断言接口请求的http状态码是否等于200
verification = [
        ['eq', 200, 'status_code']
    ] 

 

3. Der Einsatz von Funktionstools

apin unterstützt das Aufrufen benutzerdefinierter Funktionen in Testfällen zur Datenverarbeitung, z. B. zum Verschlüsseln von Daten, zum zufälligen Generieren von Daten usw.

1. Benutzerdefinierte Funktionen

In dem von apin erstellten Projekt gibt es eine funcTools.py, in der Sie die Funktion selbst definieren und sie dann im Anwendungsfall über F{xxx()} aufrufen können.

  • Beispiel: funcTools.py-Datei

import hashlib,random

def md5_encrypt(msg):
    """md5加密"""
    md5 = hashlib.md5()  
    md5.update(msg.encode("utf8"))  
    return md5.hexdigest()

def rand_phone():
    """随机生成手机号的函数"""
    import random
    for i in range(8):
        phone += str(random.randint(0, 9))
    return str(phone)


def get_timestamp():
    """获取时间戳"""
    return time.time()
  • Hinweis: Die von der Funktion verarbeiteten Daten müssen zurückgegeben werden

2. Referenzfunktionen in Anwendungsfällen

  • Zitatausdruck: F

  • demo1: Der Benutzer in den Anwendungsfalldaten bezieht sich auf die zuvor definierte rand_phone-Funktion

{
    'title': "普通用户注册",
    'interface': "member/register",
    "method": "post",
    'json': {"user": "F{rand_phone()}", "pwd": "lemon123"},
}
  • demo2: Verwenden Sie pwd in den Falldaten. Sehen Sie sich die zuvor definierte Funktion md5_encrypt an, um das Passwort mit md zu verschlüsseln

Hinweis: Wenn die in Anführungszeichen gesetzte Funktion und der übergebene Parameter Variablen sind, ist es nicht erforderlich, den variablen Anwendungsausdruck in Anführungszeichen zu setzen

{
    'title': "普通用户登录",
    'interface': "member/login",
    "method": "post",
    'json': {"user": "13109877890", "pwd": "F{md5_encrypt('lemon123')}"},
}

# 引用函数,变量作为参数传递
{
    'title': "普通用户登录",
    'interface': "member/login",
    "method": "post",
    'json': {"user": "${
   
   {user}}", "pwd": "F{md5_encrypt(${
   
   {pwd}})}"},
}

4. Globale Projektkonfiguration

Die Datei „setting.py“ im Projekt stellt die Konfigurationsdatei des gesamten Projekts dar. Als Nächstes stellen wir die Konfigurationsoptionen des Projekts im Detail vor.

1. Im Debug-Modus ausführen

Nachdem das Projekt erstellt wurde, besteht der Standardvorgang darin, den Debug-Modus zu aktivieren, und während des Vorgangs wird ein detailliertes Debug-Level-Protokoll ausgegeben.

Wenn Sie das laufende Protokoll nicht sehen möchten, setzen Sie einfach DEBUG in den Einstellungen auf False.

# 是否开启debug模式:True为debug模式,False为关闭debug模式
DEBUG = False

2. ENV globale Variablen

Die ENV in Settings.py kann die globale Konfiguration des Projekts festlegen

globaler Domänenname

Es wird empfohlen, den globalen Host in ENV festzulegen. Es wird nicht empfohlen, den Host in jedem Testfall festzulegen, und es ist bequemer, die Testumgebung zu wechseln (wenn der Host nicht in den Testfalldaten definiert ist, wird der globale Host verwendet). Adresse wird automatisch referenziert).

ENV = {
    "host":"http://WWW.XXX.com/",
}

globale Header

Wenn die Projektschnittstelle über erforderliche Request-Header-Daten verfügt, können diese auch direkt in ENV eingestellt werden (wenn sie nicht in den Use-Case-Daten definiert sind, werden auch die globalen Header automatisch referenziert).

ENV = {
    "host":"http://WWW.XXX.com/",
    "headers": {"UserAgent": "apin-test01"}
}

globale Testdaten

Wenn sich der Anwendungsfall auf einige im Voraus vorbereitete Testdaten beziehen muss, z. B. Testkonto, Passwort usw.

Zum Beispiel: Definieren Sie ein Testkonto, ein Testkennwort und eine Benutzer-ID

ENV = {     „host“: „http://WWW.XXX.com/“,     „headers“: {“UserAgent“: „apin-test01“},     „user“: „[email protected]“,     „pwd ":"lemon123",     "user_id":111 }





Verwenden Sie ${ {}} direkt im Testfall, um darauf zu verweisen.

# 引用user和pwd
{
 'title': "登录",
 'interface': "member/register",
 "method": "post",
 'json': {"mobile_phone": "${
   
   {user}}", "pwd": "${
   
   {pwd}}"},
}

Hinweis: Wenn die lokale Umgebung und die globale Variable denselben Namen haben, wird zuerst auf die lokale Variable verwiesen.

3. Prüfbericht

Über die Einstellung TEST_RESULT können Sie die Ausgabeinformationen des Testberichts konfigurieren.

TEST_RESULT = {
    # 测试报告文件名
    "filename": "report.html",
    # 测试人员
    "tester": "测试员",
    # 报告标题
    "title": "测试报告",
    # 报告样式 :有1,2,三个样式
    "templates": 1,
    # 报告描述信息
    "desc": "XX项目测试生成的报告"
}

4. Ergebnisse des E-Mail-Push-Tests

Wenn Sie die Testergebnisse an das angegebene Postfach senden möchten, fügen Sie einfach die EMAIL-Konfiguration in Settings.py hinzu.

EMAIL = {
    # smtp服务器地址
    "host": 'smtp.qq.com',
    # smtp服务器端口
    "port": 465,
    # 邮箱账号
    "user": "[email protected]",
    # smtps授权码
    "password": "xxxx",
    # 收件人列表
    "to_addrs": ['[email protected]','[email protected]'],
    # 是否发送附件
    "is_file": True
}

5. Die Testergebnisse werden an die DingTalk-Gruppe übertragen

Wenn Sie die Testergebnisse an die DingTalk-Gruppe weiterleiten möchten, fügen Sie einfach die DINGTALK-Konfiguration in Settings.py hinzu.

DINGTALK = {
    #  钉钉机器人的Webhook地址
    "url": "",
    # 如果钉钉机器人安全设置了关键字,则需要传入对应的关键字
    "key": None,
    # 如果钉钉机器人安全设置了签名,则需要传入对应的密钥
    "secret": None,
    # 钉钉群中要@人的手机号列表,如:[137xxx,188xxx]
    "atMobiles": [],
    # 是否@所有人
    "isatall": False
}

6. Die Testergebnisse werden an die WeChat-Unternehmensgruppe weitergeleitet

Wenn Sie die Testergebnisse an die WeChat-Unternehmensgruppe weiterleiten möchten, fügen Sie einfach die WECHAT-Konfiguration in „settings.py“ hinzu.

WECHAT = {
    # 企业微信群ID
    "chatid": "",
    # 调用企业微信API接口的凭证
    "access_token": ""
}

Acho que você gosta

Origin blog.csdn.net/caixiangting/article/details/132234320
Recomendado
Clasificación