インターフェイスの自動化について、知っておくべき高度なスキル - インターフェイスの自動化アーティファクトと高度な操作

1. 変数の抽出と参照

変数の抽出と参照は主にインターフェース間のパラメータ依存の問題を解決するために行われます。

使用シナリオ: インターフェイス A のパラメーターでインターフェイス B から返されたデータを使用する必要がある場合、インターフェイス B を要求した後、データを抽出して、インターフェイス A を要求するときに使用できるように保存します。

1. 変数の抽出

ユースケース セットまたはユースケース データで、抽出フィールドを通じて抽出する変数を指定します。

文法:

"extract": {    "変数名": ("変数格納レベル", "抽出メソッド", "抽出式"), }

  • 変数名:

データを保持する変数の名前

  • 可変ストレージレベル:

EVN: グローバル変数、設定ファイル内のEVN
env : ローカル変数 (現在のユースケース セットでのみ有効): ユースケース セットの env フィールド

  • 抽出方法

re:
jsonpathを抽出するための正規表現: jsonpathで抽出

場合:

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

2. 変数参照

変数参照式:

$}

引用の優先順位:

最初にユースケースのローカル変数(ユースケースのenv内の変数)が参照され、ローカル変数が存在しない場合はグローバル変数(setting.pyのENVに保存されている変数)が参照されます。

自動テストを学びたい場合は、ここで一連のビデオをお勧めします。このビデオは、ステーション B のネットワーク全体における最初のインターフェイス自動テスト チュートリアルと言えます。同時に、オンライン ユーザーの数は増加しています。 1,000 に達しました。収集すべきメモとさまざまな Lu Dashen Technical Exchange があります: 798478386      

【更新】B局が教えるPythonインターフェースの自動テストの最も詳しい実践チュートリアル集(実戦最新版)_哔哩哔哩_bilibili 【更新】Pythonの自動テストの最も詳細な実践チュートリアル集B局が教えるインターフェース(実戦編) 最新版)には以下の動画が合計200本あります: 1. 【インターフェース自動化】ソフトウェアテストの市場状況とテスターの能力基準。, 2. [インターフェイスの自動化] Requests ライブラリとその基礎となるメソッド呼び出しロジックに精通した、3. [インターフェイスの自動化] インターフェイス自動化の戦闘と正規表現と JsonPath エクストラクターの適用など。さらにエキサイティングなビデオについては、注目してください。 UPアカウント。https://www.bilibili.com/video/BV17p4y1B77x/?spm_id_from=333.337&vd_source=488d25e59e6c5b111f7a1a1a16ecbe9a

2. ユースケースアサーション

テストケースの期待結果と実際の結果の比較については、apinに検証フィールドがカプセル化されており、検証では期待結果、実際の結果の抽出式、アサーションメソッドを定義するだけで実現できます。ユースケースの主張!

1. 基本的な文法

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

2. アサーション方法

現在、apin では 2 つのアサーション メソッドがサポートされています。

等しいことを主張する: eq

期待される結果と実際の結果は等しい

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

アサーションの内容: を含む

実際の結果には期待される結果の内容が含まれます

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

3. 実績の取得

アサーションの実際の結果抽出に関しては、 V{ {expression}} を使用して抽出する必要があり、式は jsonpath 正規表現の2 つの抽出方法をサポートしています。

正規表現の抽出

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

jsonpath経由で抽出する

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

4. HTTPステータスコードのアサート

上記の 2 つのメソッドでは、結果によって返されるデータをすでに抽出できます。では、インターフェイス http リクエストのステータス コードをアサートしたい場合はどうすればよいでしょうか。

Apin は、HTTP ステータス コードを表す組み込みフィールド名も提供します。

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

 

3. 関数ツールの使用

apin は、データの暗号化、データのランダム生成など、データを処理するためのテスト ケースでのカスタム関数の呼び出しをサポートしています。

1. カスタム機能

apin によって作成されたプロジェクトには funcTools.py があり、この中で関数を自分で定義し、ユースケースで F{xxx()} を通じて呼び出すことができます。

  • 例: funcTools.py ファイル

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()
  • 注: 関数によって処理されたデータは返される必要があります。

2. ユースケースでの参照機能

  • 引用式:F

  • Demon1: ユースケースデータ内のユーザーは、以前に定義された rand_phone 関数を参照します。

{
    'title': "普通用户注册",
    'interface': "member/register",
    "method": "post",
    'json': {"user": "F{rand_phone()}", "pwd": "lemon123"},
}
  • Demon2: ケースデータで pwd を使用し、前に定義した md5_encrypt 関数を参照してパスワードを md で暗号化します。

注: 引用符で囲まれた関数と渡されたパラメーターが変数の場合、変数アプリケーション式の前後に引用符を追加する必要はありません。

{
    '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. プロジェクトのグローバル構成

プロジェクト内のsetting.pyファイルはプロジェクト全体の設定ファイルです 次に、プロジェクトの設定オプションについて詳しく紹介します。

1. デバッグモードで実行する

プロジェクト作成後、デフォルトの動作ではデバッグモードが有効となり、動作中に詳細なデバッグレベルのログが出力されます。

実行ログを表示したくない場合は、設定の DEBUG を False に設定してください。

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

2. ENV グローバル変数

settings.py の ENV はプロジェクトのグローバル構成を設定できます

グローバルドメイン名

ENV でグローバル ホストを設定することをお勧めします。テスト ケースごとにホストを設定することは推奨されず、テスト環境を切り替える方が便利です (テスト ケース データにホストが定義されていない場合は、グローバル ホストが使用されます)。アドレスは自動的に参照されます)。

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

グローバルヘッダー

プロジェクト インターフェイスに必要なリクエスト ヘッダー データがある場合は、ENV で直接設定することもできます (ユース ケース データで定義されていない場合は、グローバル ヘッダーも自動的に参照されます)。

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

グローバルテストデータ

ユースケースで、テストアカウントやパスワードなど、事前に用意されたテストデータを参照する必要がある場合。

例: テスト アカウント、テスト パスワード、ユーザー ID を定義します。

ENV = {     "ホスト":"http://WWW.XXX.com/",     "ヘッダー": {"ユーザーエージェント": "apin-test01"},     "ユーザー":"[email protected]",     "pwd ":"lemon123",     "ユーザーID":111 }





テストケース内で${ {}} を直接使用して 参照します。

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

注: ローカル環境とグローバル変数の名前が同じ場合、ローカル変数が最初に参照されます。

3. 試験報告書

設定のTEST_RESULTにより、テストレポートの出力情報を設定できます。

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

4. プッシュテスト結果をメールで送信する

テスト結果を指定したメールボックスに送信したい場合は、settings.py に EMAIL 構成を追加するだけです。

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. テスト結果は DingTalk グループにプッシュされます

テスト結果を DingTalk グループにプッシュしたい場合は、settings.py に DINGTALK 構成を追加するだけです。

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

6. テスト結果は企業の WeChat グループにプッシュされます

テスト結果をエンタープライズ WeChat グループにプッシュしたい場合は、settings.py に WECHAT 構成を追加するだけです。

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

おすすめ

転載: blog.csdn.net/caixiangting/article/details/132234320