爆発仕上げ、インターフェース自動テストデータドリブンフレームワークパッケージ化(実用的)


序文

インターフェース自動化フレームワーク - データ駆動型

ここでのテストの入出力データは、データ ファイル (データ プール、ODBC ソース、CSV ファイル、EXCEL ファイル、Json ファイル、Yaml ファイル、ADO オブジェクトなど) から読み取られ、キャプチャ ツールまたは手動で生成されたコード スクリプトによって生成されます。変数にロードします。

このフレームワークでは、変数は入力値を格納するだけでなく、出力検証値を格納するためにも使用されます。プログラム全体を通じて、テスト スクリプトは数値ファイルを読み取り、テストのステータスと情報を記録します。

これは、テスト ケースがスクリプトではなくデータ ファイルに含まれるテーブル駆動テストに似ており、スクリプトはデータの単なる「ドライバー」、つまり配信メカニズムにすぎません。

もっと簡単に言うと、テスト データとテスト プロセスで使用されるコードは別々に記述され、別々に保存されます。

たとえば、データ appid-sercet とトークン インターフェイスのテストに使用される予想される結果は、事前にデータ ファイルに保存されます。

例:
プロジェクト内の access_token は公的に必要なテスト データです。生成は 1 回で、有効期間は 7200 秒です。通常、すべてのインターフェイス テストは 2 時間で実行できます。
トークン値を 1 回だけ取得してファイルに保存し、ファイル内のトークン値を使用してテストを完了します。

1. プロジェクトのルート ディレクトリに新しい conf フォルダーを作成し、その下に新しい config.ini ファイルを作成します。

E1

2. 共通の py フォルダーに新しい ini_file_utils.py ファイルを作成し
、コードを記述します。

import os
import configparser


class IniFileUtils:  #和框架业务无关的底层代码==》公共底层代码

    def __init__(self,file_path):
        self.ini_file_path = file_path
        self.conf_obj = configparser.ConfigParser()
        self.conf_obj.read(self.ini_file_path, encoding='utf-8')

    def get_config_value(self,section, key):
        value = self.conf_obj.get(section, key)
        return value

    def set_config_value(self,section, key, value):
        self.conf_obj.set(section, key, value)
        config_file_obj = open(self.ini_file_path, 'w')
        self.conf_obj.write(config_file_obj)
        config_file_obj.flush()
        config_file_obj.close()

if __name__ == '__main__':
    current_path = os.path.dirname(__file__)
    config_file_path = os.path.join(current_path, '../conf/config.ini')
    ini_file = IniFileUtils(config_file_path)
    print(ini_file.get_config_value('default', 'HOSTS'))
    ini_file.set_config_value('default','TOKEN_VALUE', 'SSS9090')

実行して結果を表示します。

E2

ini 設定ファイルの token_value の値

E3

3. local_config.py ファイルを書き換えて、ini ファイル内の値をカプセル化します。

E4

コードを書きます:

import os
from common.ini_file_utils import IniFileUtils


current_path = os.path.dirname(os.path.abspath(__file__))
config_file_path = os.path.join(current_path, '../conf/config.ini')


class LocalConfig():  # #和框架业务有关系的底层代码

    def __init__(self,file_path = config_file_path):
        self.ini_file_obj = IniFileUtils(file_path)
    @property
    def get_hosts(self):
        '''获取ini文件中的hosts值'''
        hosts_value = self.ini_file_obj.get_config_value('default', 'hosts')
        return hosts_value
    @property
    def get_token_value(self):
        '''获取ini文件中的token_value值'''
        token_value = self.ini_file_obj.get_config_value('default','token_value')
        return token_value

local_config = LocalConfig()

if __name__ == '__main__':
    print(local_config.get_hosts)
    print(local_config.get_token_value)

実行結果を表示します。

E5

4. common_function.py ファイルを変更し、取得したトークン値を ini ファイルに配置し、次の
コードを記述します。

import os
import jsonpath
from common.local_config import local_config
from common.common_api_info import CommonApiInfo
from common.ini_file_utils import IniFileUtils


current_path = os.path.dirname(os.path.abspath(__file__))
config_file_path = os.path.join(current_path, '../conf/config.ini')

def save_access_token_value_info_ini_file(session_obj,hosts):
    """获取access_token的值并写入到ini文件中"""
    response = CommonApiInfo(session_obj,hosts).get_access_token_api('client_credential',
                                                          'wxf14419077f707856',
                                                          '92a113bd4b5ffdc72144740dc7123c99')
    # 获取响应json中的access_token的值
    token_value = jsonpath.jsonpath(response.json(), "$.access_token")[0]
    # 把获取到的access_token值写入到ini文件中
    IniFileUtils(config_file_path).set_config_value('default', 'token_value', token_value)
    # return token_value

if __name__ == '__main__':
    import requests
    save_access_token_value_info_ini_file(requests.session(), local_config.get_hosts)

実行後、ini ファイルの token_value の値を確認します。

最新のトークン値が書き込まれています

E5

5. run_api_tests.py ファイルを変更し、最初にトークン値を ini ファイルに書き込みます。

E6

6. ユースケース層のコードを変更し、トークンのpyファイルを取得する
変更前と変更後のユースケース層のコードスクリプト。

E7

修正後

E8

トークンの py ファイルを取得します。

E9

7. run_api_tests.py ファイルを実行し、実行結果を確認します。

E10

レポートを見る

E11

トークン値は Run_api_tests.py で生成され、ini 構成ファイルに与えられます。テストがトークン インターフェイスを取得すると、生成されたトークン値が呼び出されます。後で生成された値が以前の値を上書きして、ini 構成ファイルに問題が発生するのを防ぐためです。ファイルが無効になるには、テスト トークン インターフェイスを変更する必要があります。異なるアカウント (appid と Secret)

以下は、私がまとめた 2023 年の最も包括的なソフトウェア テスト エンジニア学習ナレッジ アーキテクチャ システム図です。

1. Python プログラミングの入門から習熟まで

画像の説明を追加してください

2. インターフェース自動化プロジェクトの実践

画像の説明を追加してください

3. Web自動化プロジェクトの実戦

画像の説明を追加してください

4. アプリ自動化プロジェクトの実践

画像の説明を追加してください

5. 一流メーカーの履歴書

画像の説明を追加してください

6. DevOps システムのテストと開発

画像の説明を追加してください

7. 一般的に使用される自動テストツール

画像の説明を追加してください

8. JMeter パフォーマンス テスト

画像の説明を追加してください

9. まとめ(最後にちょっとしたサプライズ)

闘争は人生の基礎であり、継続は成功のパスワードであり、卓越性を追求し、前進し、汗を流して素晴らしい音楽を作曲します。自分の可能性と才能を信じ、常に自分を超えて、自分だけの壮大な人生像を描きましょう!

積極的に挑戦し、果敢に人生のステージに乗り出し、夢を胸に抱き、輝かしい成功をしっかりと追い求めます。立ち止まらず、止まらず、情熱を捨てずに突き進んで、自分の力を信じて頑張って、人生の輝かしい一章を書きましょう!

自信が前途を照らし、汗が鮮やかな花を潤し、努力は限界を超え、夢は青春のメロディーに合わせて踊ります。情熱を貫き、距離を追い、あなただけの壮大な伝説を作りましょう。努力すれば才能が開花し、勇敢に前進して素晴らしい人生を手に入れましょう!

おすすめ

転載: blog.csdn.net/m0_60054525/article/details/132024184