1. 郵便配達員の主張
Postman は、js 言語を使用してコードを記述し、期待される結果が実際の結果と一致するかどうかを自動的に判断します。
アサーション コードは Tests タグに記述されます。
1.1 アサーションレスポンスのステータスコード
Status code: Code is 200
1) [テスト] タブで、[ステータス コード: code is 200] を選択し、対応するコードを生成します
2) test() メソッドのパラメーター 1 と匿名関数の期待される結果を適切に調整します。
3) 送信ボタンをクリックしてリクエストを送信し、アサーション コードを実行します。
4) アサーションの結果を表示します。
// 断言响应状态码 是否为 200
pm.test("Status code is 200", function () {
pm.response.to.have.status(200);
});
pm:代表 postman 的一个实例
test():是 pm实例的一个方法。有两个参数
参数1:在断言成功后,给出的文字提示。可以修改。"Status code is 200"
参数2:匿名函数。
pm.response.to.have.status(200);
// 意思:postman 的响应结果中应该包含状态码 200
200 ——> 预期结果!
1.2 レスポンスボディに特定の文字列が含まれているかどうかを確認する
Response body: Contains string
// 断言响应体包含指定字符串
pm.test("Body matches string", function () {
pm.expect(pm.response.text()).to.include("string_you_want_to_search");
});
pm:postman的一个实例
test(): postman实例的方法,有两个参数
参1:断言后显示的文字提示信息,可改。
参2:匿名函数
pm.expect(pm.response.text()).to.include("string_you_want_to_search");
// 意思:pm 期望 响应文本 中,包含 xxxx 字符串。
"string_you_want_to_search" ——> 预期结果。 可以修改
1.3 レスポンスボディが特定の文字列(オブジェクト)と等しいかどうかをアサートする
Response body: Is equal to a string
// 断言 响应体 等于某个字符串(对象)
pm.test("Body is correct", function () {
pm.response.to.have.body("response_body_string");
});
pm.response.to.have.body("response_body_string");
// 意思是,pm 的 响应中应该有 响应体 xxx
"response_body_string" ——> 预期结果。 可以修改
1.4 JSONデータのアサート
Response body: JSON value check
// 断言json的响应结果
pm.test("Your test name", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.value).to.eql(100);
});
// var jsonData: 用js语法定义一个变量。jsonData 就是变量名
// pm.response.json(); 代表响应的json结果
/* 举例:response.json();
{
"success": true,
"code": 10000,
"message": "操作成功!",
"data": "95c78d75-721c-40fb-b2d5-742fea42cbd5"
}
*/
pm.expect(jsonData.value).to.eql(100);
// 意思:pm 预期 json结果 key对应的值 等于 xxx
// to.eql(100); 中的 100 代表预期结果。可以修改的。
示例:
// 断言json的响应结果-success的值为true
pm.test("断言响应结果success的值为true", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.success).to.eql(true);
});
pm.test("断言响应结果中code的值为10000", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.code).to.eql(10000);
});
pm.test("断言响应结果中message的值为 操作成功", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.message).to.eql("操作成功!");
});
1.5 アサーションレスポンスヘッダー
Response headers: Content-Type header check
// 断言响应头
pm.test("Content-Type is present", function () {
pm.response.to.have.header("Content-Type");
});
// pm 的响应 头中包含 Content-Type
// 示例:可以在 header 中,添加 响应头中的 key 对应的 value 判定。用 ,隔分。
// 断言响应头
pm.test("Content-Type is present", function () {
pm.response.to.have.header("Content-Type", "application/json;charset=UTF-8");
});
2. グローバル変数と環境変数
2.1 グローバル変数
概念: Postman でグローバルに有効な変数はグローバルに一意です
2.1.1 設定
コード設定:pm.globals.set(“全局变量名”,全局变量的值)
pm.globals.set("glb_age", 100)
2.1.2 取得
コード取得:var 接收值的变量 = pm.globals.get(“全局变量名”)
var ret = pm.globals.get("glb_age") // ret 的值为 100
リクエストパラメータの取得: (ポストマンインターフェイス経由で取得):{
{全局变量名}}
2.2 環境変数
概念: 特定の環境 (運用環境、開発環境、テスト環境) では、有効になる変数はこの環境内で一意です。
2.2.1 設定
コード設定:pm.environment.set("环境变量名", 环境变量值)
pm.environment.set("env_age", 99)
2.2.2 取得
コードの取得:var 接收值的变量 = pm.environment.get("环境变量名")
var ret = pm.environment.get("env_age") // ret 的值为 99
リクエストパラメータの取得 (postman インターフェース経由で取得):{
{环境变量名}}
3. 郵便配達員リクエストの事前スクリプト
送信ボタンをクリックすると、リクエストの事前スクリプト コードがすぐに実行されます。postman 内の実際の http リクエストの前。
場合:
Baidu ホームページ インターフェイスを呼び出し、タイムスタンプをサーバーに送信します
実装手順:
1) [Pre-request Script] タブで、コードを追加します。タイムスタンプを取得してグローバル変数に書き込みます
// 拿到时间戳
var timestamp = new Date().getTime()
// 将时间戳设置到 全局变量
pm.globals.set("glb_timestamp", timestamp)
2) [送信] ボタンをクリックしてリクエストを送信します。上記のコードは、リクエストが送信される前に実行されます。グローバル変数への書き込み
3) 書き込まれた変数の表示
4) リクエストパラメータ(インターフェース)では、グローバル変数を使用します。{
{グローバル変数名}}
5) postman コンソールで、送信された http リクエストを表示します。
4.郵便配達員協会
複数の http リクエスト間にデータの関連付けまたは依存関係がある場合に適用されます。
実装手順:
インターフェイス A はインターフェイス B のデータに依存します
1) インターフェイス B に http リクエストを送信してデータを取得します
2) データをグローバル変数 (環境変数) に設定します
3) インターフェイス A はグローバル変数 (環境変数) のデータ値を取得します)を使用して実行します。
場合:
天気インターフェースの取得をリクエストし、応答結果から都市を抽出し、その都市名を Baidu 検索インターフェースに使用します。
1) ユースケース セットを作成し、天気クエリ リクエストと Baidu 検索リクエストをそれぞれ作成します。
2) 天気クエリリクエストのテストで、都市名を取得するコードを記述し、それをグローバル変数に書き込みます。
// 获取 全部响应结果
var jsonData = pm.response.json()
// 从响应结果中 获取 城市名
var city = jsonData.weatherinfo.city
// 将城市名写入到全局变量
pm.globals.set("glb_city", city)
3) [送信] ボタンをクリックしてリクエストを送信し、設定されているグローバル変数を表示します。(最初にグローバル変数またはローカル変数を作成できるため、最初に「リクエストの送信」をクリックする必要はありません。ユースケースをバッチで実行するだけで済みます)
4) Baidu の検索リクエストを変更し、グローバル変数を使用し、都市名で検索します。
http://www.baidu.com/s?wd={
{glb_city}}
5. テスト ケースをバッチで実行する
6. ポストマンのパラメータ化
6.1 データファイル
- CSVの利点
:
データの整理形式がシンプルで、大量のデータを扱う場合に適しています。
欠点:
1) Bool 型データはサポートされていません。(データが postman によって読み取られた後、ブール値をラップするために "" が自動的に追加されます。)
2) 複数のパラメーター、少数のパラメーター、パラメーターなし、および間違ったパラメーターを使用したインターフェイスのテストはサポートされていません。
3) 複雑なデータ型はサポートされていません。(ネストされた辞書、リストなど) - JSON :
利点:
1) bool 型をサポートします。
2) 複数のパラメータ、少数のパラメータ、パラメータなし、および間違ったパラメータをサポートします。
3) 複雑なデータ型をサポートします。
欠点:
同じ量のデータの場合、json データ ファイルのサイズは CSV ファイルよりもはるかに大きくなります。
6.2 外部データファイルのインポート
- CSV ファイル
1) xxx.csv ファイルを作成する 最初にメモ帳ファイルを作成し、書き込み後に csv ファイルに変換することができます。
2) データを csv ファイルに書き込みます。
1行目に書かれるのはデータに対応する「フィールド名」です。
2 行目以降は、カンマで区切られた対応する値です。
3) Postman で、データ ファイルを使用するユース ケース セットを選択し、データ ファイルをインポートします。
a. ユースケースセット名をクリックし、「実行」ボタンを使用して「ランナー」ページに入ります。
b. 「ファイルの選択」ボタンを使用して、xxx.csv ファイルを選択します。
c. [プレビュー] ボタンをクリックして、データ ファイルが正しいかどうかを確認します。
- JSON ファイル
1) xxx.json データファイルを作成します。
2) データファイル内に、json 構文に従って json データを記述します。Postman では、json 形式のデータ ファイルの場合、データ コンテンツの最外層が [] である必要があります。すべての内部データは、{} を使用して保存されます。
3) Postman で、データ ファイルを使用するユース ケース セットを選択し、データ ファイルをインポートします。
a. ユースケースセット名をクリックし、「実行」ボタンを使用して「ランナー」ページに入ります。
b. [ファイルの選択] ボタンを使用して、xxx.json ファイルを選択します。
c. [プレビュー] ボタンをクリックして、データ ファイルが正しいかどうかを確認します。
6.3 データファイルデータの読み込み
データ ファイル内のデータを取得するには、使用するデータの場所に応じて 2 つの方法があります。
最初の{
{}}
: リクエスト パラメーター (リクエスト ライン、リクエスト ヘッダー、リクエスト本文) で、データ ファイル内のデータを使用して、CSV ファイルのフィールド名または JSON ファイル内のキーをラップします (
例: {
{username}}
または {
{password}}
2 番目の: コード (アサーション) 、リクエスト プレフィックス スクリプト)、データ ファイル内のデータを使用するには、postman によって提供されるキーワード データを使用して、csv ファイルのフィールド名または json ファイルのキーを指す必要があります。たとえば、次のようになり
ますdata.username
。data.password
場合:
要件: 携帯電話番号の所在地と事業者を一括で照会し、事業者データの正確性を検証する
インターフェース: http://cx.shoji.360.cn/phonearea.php?number=13012345678
テストデータ:
携帯電話番号: 13012345678 運営プロバイダー: China Unicom 携帯
電話番号: 13800001111 オペレーター: China Mobile 携帯
電話番号: 18966778899 オペレーター: Telecom
1) 単一のインターフェイス、パラメータ、応答本体データ間の対応をテストします。
2) データファイルを書き込み、csv または json に対応する構文形式に従ってデータを整理します。
3) 上記の使用例の 2 つの場所 (
コード内の Attribution:) を置き換えます。携帯電話番号を
クエリ パラメータの data. フィールド名 : に置き換えます。
{ {フィールド名}}に 置き換えます。
4) データ ファイルを使用するユース ケース セットを選択し、[ランナー] ページに入ります。データファイルをインポートして実行します。
5) 例外がある場合は、postman コンソールを使用して確認します。
概要: データ ファイルを使用して「データドリブン」を実現します。——http リクエストの数に応じて、データがいくつ存在するか。
7. 郵便配達員のテストレポート
7.1 newman のインストール
最初にnode.jsをインストールする必要があります
npm install -g newman
npm install -g newman-reporter-html
7.2 newman を使用してテスト レポートを生成する
1) テスト ケース セットをバッチで実行します。(確認)
2) ユースケースセットをエクスポートします。(xxxx.json ファイルを取得します)
3) 環境変数をエクスポートする
3) ターミナルでコマンドを実行し、テストレポートを生成します。
コマンドを完了します。
newman run xxxx.json -e 环境变量文件 -d 外部数据文件 -r html --reporter-html-export 测试报告名.html
例:
newman run 批量执行测试用例.postman_collection.json -r html --reporter-html-export 我的第一个测试报告.html