インターフェイス自動化テストのアイデアと実用的なデータ駆動型テスト フレームワーク

データ ドリブン テスト フレームワーク

  ここでテストされた入力および出力データは、データ ファイル (データ プール、ODBC ソース、CSV ファイル、EXCEL ファイル、Json ファイル、Yaml ファイル、ADO オブジェクトなど) およびキャプチャ ツールによって生成されたコード スクリプトまたは手動で生成されたコード スクリプトから読み取られます。変数。このフレームワークでは、変数は入力値を格納するだけでなく、出力検証値を格納するためにも使用されます。プログラム全体を通して、テスト スクリプトは値ファイルを読み取り、テストのステータスと情報を記録します。これは、テスト ケースがスクリプトではなくデータ ファイルに含まれるテーブル駆動テストに似ており、スクリプトは単にデータの「ドライバー」または配信メカニズムです。

より普及させるために、テストプロセスで使用されるテストデータとコードは別々に作成され、別々に保存されます。

例: データ appid-sercet と、テスト トークン インターフェイスで使用される期待される結果は、事前にデータ ファイルに入れられます。

例: プロジェクトの access_token は公開要件テスト データであり、一度生成されると 7200 秒間有効であり、通常、すべてのインターフェイス テストは 2 時間で実行できます。

トークン値の 1 回の取得を実現し、ファイルに保存してから、ファイル内のトークン値を使用してテストを完了します。

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

ステップ 2. common の py フォルダーの下に新しい ini_file_utils.py ファイルを作成します。

 コードを書く:

# encoding: utf-8
# @author: Jeffrey
# @file: ini_file_utils.py
# @time: 2022/7/31 16:22
# @desc: 读取、写入ini文件
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')

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

ini 構成ファイルの token_value の値

ステップ 3、local_config.py ファイルを書き換え、カプセル化して ini ファイルの値を読み取る

 コードを書く:

# encoding: utf-8
# @author: Jeffrey
# @file: local_config.py
# @time: 2022/7/26 21:25
# @desc:  封装读取ini文件中的值
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)

実行結果を表示します。

ステップ 4. common_function.py ファイルを変更し、取得したトークン値を ini ファイルに入れます

 コードを書く:

# encoding: utf-8
# @author: Jeffrey
# @file: common_function.py
# @time: 2022/7/26 21:01
# @desc: 模块化框架
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 の値を確認します。

最新のトークン値が書き込まれました

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

ステップ 6. ユース ケース レイヤーのコードを変更し、トークンの py ファイルを取得する

変更前のユースケース層のコードスクリプト VS 変更後のコードスクリプト

VS

修正後

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

ステップ 7. run_api_tests.py ファイルを実行して、実行結果を表示します。

レポートを見る

Run_api_tests.py では、ini 構成ファイルに対してトークン値が生成され、テストがトークン インターフェイスを取得するときに、生成されたトークン値が再度呼び出されます. 後で生成された値が以前の値を上書きして、エラーが発生するのを防ぐため. ini 構成ファイルが失敗する場合、テスト取得トークン インターフェイスを変更する必要があります。異なるアカウント (appid とシークレット)

備考: 上記は、各フレームワークがリニア スクリプトとは異なるということです --- モジュラー フレームワーク --- ライブラリ フレームワーク --- データ駆動型

実例

光学理論は役に立たないので、従うことを学ばなければならず、学んだことを実践に適用できるように、自分でやらなければなりません.このとき、いくつかの実践的なケースから学ぶことができます.

お役に立ちましたら、いいねとコレクションをお願いします。作者の励みになります。次回からすぐに見つけられるのも便利です。

理解できない場合は、下の小さなカードを参照してください. ブロガーはまた、志を同じくするテスターと一緒に学び、進歩することを望んでいます.

適切な年齢で、適切なポジションを選択し、自分の利点を最大限に発揮するようにしてください。

私の自動テスト開発の道のりは、途中の各段階の計画と切り離すことはできません。計画と要約が好きだからです。

ビデオ チュートリアルのテストと開発、ノートの学習、ポータルの受信を行います。! !

おすすめ

転載: blog.csdn.net/Liuyanan990830/article/details/130506469