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
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": ""
}