ディレクトリ
3.1ユースケースの次のステップのパラメーターは、前のステップで取得する必要があります
3.2ユースケースで別のユースケースを呼び出し、必要なパラメーターを渡して達成する
1.インターフェースを定義する
1.1インターフェース定義を書く
最初に、ケースディレクトリtests \ apiのget_token.ymlを、作成したテスト構造ディレクトリApi_api \ apiにコピーし、コメントを追加して、例の記述方法を理解します。
name: get token #接口定义描述
base_url: http://127.0.0.1:5000 #请求的根目录
variables: #定义变量
user_agent: PostmanRuntime/7.24.0
device_sn: ${gen_random_string(15)}
os_platform: ios
app_version: 2.8.6
expected_status_code: 200
request: #请求信息
url: /api/get-token #请求的相对路径
method: POST
headers:
user_agent: $user_agent
device_sn: $device_sn
os_platform: $os_platform
app_version: $app_version
Content-Type: "application/json"
device_sn: $device_sn
json:
sign: ${get_sign($device_sn, $os_platform, $app_version)}
validate: #校验/断言
- eq: ["status_code", $expected_status_code] #状态码
- len_eq: ["content.token", 16] #token字符串长度
- contains: [{"a": 1, "b": 2}, "a"] #此句不明何意?
1.2デバッグAPI
APIは可能な限り完全な状態に保たれ、個別に実行してデバッグを容易にすることができます。
hrun D:\ httprunner \ Api_api \ api \ get_token.yml
2.テストケースが定義済みのAPIを呼び出す
2.1参照インターフェースの定義
config:
name: 获得 token #必填,测试用例名称,测试报告以此作为标题
variables: #非必填,全局变量,作用域为整个testcase,可合并覆盖API中的variables
user_agent: win/7
os_platform: 'win'
device_sn: TESTCASE_SETUP_001
teststeps:
- name: /api/get-token #必填,测试步骤名称
api: api/get_token.yml
variables: #合并覆盖API中的variables,但不能覆盖config中的variables
user_agent: 'iOS/12'
app_version: '7'
extract:
- session_token: content.token
teardown_hooks:
- ${hook_print($user_agent)}
- ${hook_print($os_platform)}
- ${hook_print($app_version)}
- ${hook_print($device_sn)}
validate:
- eq:
- status_code
- 200
- len_eq:
- content.token
- 16
2.2トークン情報を抽出する
extractキーワードを使用して情報を抽出します。完全なコードは次のとおりです。
config:
name: 获得 token #必填,测试用例名称,测试报告以此作为标题
variables: #非必填,全局变量,作用域为整个testcase,可合并覆盖API中的variables
user_agent: win/7
os_platform: 'win'
device_sn: TESTCASE_SETUP_001
output: #只能打印出config中定义的变量,和extract提取的信息,步骤中定义的和api中定义的变量,在此输出时找不到数据
- session_token
- user_agent
- os_platform
- app_version
- device_sn
teststeps:
- name: /api/get-token #必填,测试步骤名称
api: api/get_token.yml
variables: #合并覆盖API中的variables,但不能覆盖config中的variables
user_agent: 'iOS/12'
app_version: '7'
extract:
- session_token: content.token #获取token值
output: #放在测试步骤中不会打印出信息
- app_version
teardown_hooks:
- ${hook_print($user_agent)}
- ${hook_print($os_platform)}
- ${hook_print($app_version)}
- ${hook_print($device_sn)}
validate:
- eq:
- status_code
- 200
- len_eq:
- content.token
- 16
1.3 outputキーワードを使用して、抽出されたキーワードを出力します
上記のコードでは、抽出されたデータを実行結果で簡単に表示できるように、出力を使用してトークンを出力していますが、試行中に次の2つの問題が見つかりました。
1. configで記述された出力は効果的ですが、teststepsで記述された効果はありません。
2. configに書き込みます。configで定義された変数と、extractによって抽出された情報、手順で定義された変数、定義されたapiのみを出力できます。この出力ではデータが見つかりません。
3.パラメータ間の相関
3.1ユースケースの次のステップのパラメーターは、前のステップで取得する必要があります
この例では、ユーザーを作成するときに、get_tokenインターフェースによって生成されたトークンデータが必要です。以下は、ユーザーを作成するためのインターフェーススクリプトを実装しています。
config:
name: 创建用户 #必填,测试用例名称,测试报告以此作为标题
variables: #非必填,全局变量,作用域为整个testcase,可合并覆盖API中的variables
user_agent: win/7
os_platform: 'win'
device_sn: ${gen_random_string(15)}
output: #只能打印出config中定义的变量,和extract提取的信息,步骤中定义的和api中定义的变量,在此输出时找不到数据
- session_token
- user_agent
- os_platform
- app_version
- device_sn
extract:
- session_token
teststeps:
- name: 获取token #必填,测试步骤名称
api: api/get_token.yml
variables: #合并覆盖API中的variables,但不能覆盖config中的variables
user_agent: 'iOS/12'
app_version: '7'
extract:
- session_token: content.token #获取token值
teardown_hooks:
- ${hook_print($user_agent)}
- ${hook_print($os_platform)}
- ${hook_print($app_version)}
- ${hook_print($device_sn)}
validate:
- eq:
- status_code
- 200
- len_eq:
- content.token
- 16
- name: 创建用户 #必填,测试步骤名称
api: api/create_user.yml
variables:
token: $session_token
3.2ユースケースで別のユースケースを呼び出し、必要なパラメーターを渡して達成する
1.パラメーター情報を取得するには、呼び出されたパラメーターに抽出キーワードを追加する必要があります。同時に、このパラメーターを構成に追加します。他のユースケースでは、取得したパラメーターを使用できます。抽出コードブロックは、次のように完全なコードに追加されます。
config:
name: 获得 token #必填,测试用例名称,测试报告以此作为标题
variables: #非必填,全局变量,作用域为整个testcase,可合并覆盖API中的variables
user_agent: 'win/7'
os_platform: 'win'
device_sn: ${gen_random_string(15)}
output: #只能打印出config中定义的变量,和extract提取的信息,步骤中定义的和api中定义的变量,在此输出时找不到数据
- session_token
- user_agent
- os_platform
- app_version
- device_sn
extract: #后续接口需要关联此参数信息,则在此需要加入此关键字和参数
- session_token
teststeps:
- name: /api/get-token #必填,测试步骤名称
api: api/get_token.yml
variables: #合并覆盖API中的variables,但不能覆盖config中的variables
user_agent: 'iOS/12'
app_version: '7'
extract:
- session_token: content.token #获取token值
output: #放在测试步骤中不会打印出信息
- app_version
teardown_hooks:
- ${hook_print($user_agent)}
- ${hook_print($os_platform)}
- ${hook_print($app_version)}
- ${hook_print($device_sn)}
validate:
- eq:
- status_code
- 200
- len_eq:
- content.token
- 16
2.「ユーザーの作成」のユースケースで、「トークンの取得」のユースケースを呼び出します。
config:
name: 创建用户 #必填,测试用例名称,测试报告以此作为标题
extract:
- session_token
- device_sn
teststeps:
- name: 获取token #必填,测试步骤名称
testcase: testcases/get_token_new1.yml
extract:
- session_token
- device_sn
- name: 创建用户 #必填,测试步骤名称
api: api/create_user.yml
variables:
token: $session_token
device_sn: $device_sn
ユースケースは、次の2つの方法で正常に実行できます。
一緒に書かれたユースケースの結果:
ユースケースで別のユースケースを呼び出した結果:
4.テストステップの記述方法
テストステップ次のように、teststepsコードブロックでは、名前ブロックはステップです。
config:
name: 创建用户 #必填,测试用例名称,测试报告以此作为标题
extract:
- session_token
- device_sn
teststeps:
- name: 获取token #第一步,获取token
testcase: testcases/get_token_new1.yml
extract:
- session_token
- device_sn
- name: 创建用户 #第二步,根据token创建用户
api: api/create_user.yml
variables:
token: $session_token
device_sn: $device_sn