postmanインタフェーステストシリーズ:インタフェースのパラメータ化とパラメータの伝達
10156 ワード
前回の章のタイムスタンプと暗号化に続き、前節ではPre-Request Scriptを使用してタイムスタンプと暗号化後のデータを正しく取得でき、インタフェースの応答結果も予想される目標に達しました.ここではまずインタフェースの使用例設計のテストポイントを簡単に説明し,断面図に示す
次に、セッションを作成するインタフェースの例(実際には、インタフェースの例の設計と一般的なモジュールの機能テストの例の原理は同じです)について説明します.ここでは、図のように簡単に説明します.
これでセッション認証を作成するインタフェースがテスト済みです.
次に、2番目のインタフェース-コンシューマ情報入力に入ります.このインタフェースパラメータでは、このインタフェースのエントリセッションとして最初のインタフェースの戻り値resultを使用する必要がありますが、ここではどのように操作しますか?実際には、最初のインタフェース:セッションの作成で操作しました.ここで詳しく説明します.コードは次のとおりです.
セッションの作成に対するインタフェース応答結果コードは次のとおりです.
上のコードでは、このような描写が見られます.
これにより,2番目のインタフェースのパラメトリックセッションIDのパラメータ値情報が得られ,次にmd 5暗号化を用いてインタフェースの例を記述する.まず、図に示すように、インタフェースのドキュメントの説明を見てみましょう.
インタフェースドキュメントの説明に従ってpostmanのインタフェース情報は、図に示すように
ここでインタフェースの説明によると、ユーザーの身分証明書番号と携帯電話番号を追加するのは唯一であり、一度使用例を実行して身分証明書番号と携帯電話番号を変更するのは面倒ではないか.これは後期のインタフェースの自動化操作にも不利である.このインタフェースの使用例を実行するたびに、入力した身分証明書番号と携帯電話番号が変化するパラメータで後期のインタフェース自動化操作が実現されるとしたら、どのように実現すればよいのでしょうか.
ランダム
リクエストパラメータを少し変更
postmanではrandomIntを使用して実行するたびにパラメータが変化し、
次に、ユーザー名、ニックネーム、身分証明書番号、携帯電話番号、性別を入力するランダムな入力操作を実現します.コードは以下の通りです.
これによりインタフェースのパラメータ化が実現され,ユーザに入力されるインタフェースPre-Request Scriptコードは以下のようになる.
部分コードリファレンスhttps://testerhome.com/topics/6641
次にpotmanでbodyに図のように設定します
その後Testsにアサーション情報を追加し,コードは以下の通りである.
上記のコードでは、
この2つの異なるインタフェース応答結果の取値により,この構造型の応答結果の取値に容易に対応できる.あとは他のインタフェースの応答結果に出会って値を取って、またゆっくり蓄積していきましょう・・・
転載先:https://www.cnblogs.com/LOVEYU/p/7929471.html
次に、セッションを作成するインタフェースの例(実際には、インタフェースの例の設計と一般的なモジュールの機能テストの例の原理は同じです)について説明します.ここでは、図のように簡単に説明します.
これでセッション認証を作成するインタフェースがテスト済みです.
次に、2番目のインタフェース-コンシューマ情報入力に入ります.このインタフェースパラメータでは、このインタフェースのエントリセッションとして最初のインタフェースの戻り値resultを使用する必要がありますが、ここではどのように操作しますか?実際には、最初のインタフェース:セッションの作成で操作しました.ここで詳しく説明します.コードは次のとおりです.
if(responseCode.code === 200){
// 'success'
tests["Body matches code"] = responseBody.has("0");
// result,
var jsonData = JSON.parse(responseBody);
postman.setGlobalVariable("sessionId",jsonData.result);
tests[`[INFO] Request params: ${JSON.stringify(request.data)}`] = true;
// tests["have result "]=jsonData.hasOwnProperty("error")!==true;
tests["have result "]=jsonData.hasOwnProperty("result")===true;
tests[`[INFO] Response timeout: ${responseTime}`] = responseTime < 6000;
}else{
//
tests["Waring:Request Failed. Please Fix!"] = false;
}
セッションの作成に対するインタフェース応答結果コードは次のとおりです.
{
"result": "******45****",
"code": "0"
}
上のコードでは、このような描写が見られます.
// result,
var jsonData = JSON.parse(responseBody);
postman.setGlobalVariable("sessionId",jsonData.result);
これにより,2番目のインタフェースのパラメトリックセッションIDのパラメータ値情報が得られ,次にmd 5暗号化を用いてインタフェースの例を記述する.まず、図に示すように、インタフェースのドキュメントの説明を見てみましょう.
インタフェースドキュメントの説明に従ってpostmanのインタフェース情報は、図に示すように
ここでインタフェースの説明によると、ユーザーの身分証明書番号と携帯電話番号を追加するのは唯一であり、一度使用例を実行して身分証明書番号と携帯電話番号を変更するのは面倒ではないか.これは後期のインタフェースの自動化操作にも不利である.このインタフェースの使用例を実行するたびに、入力した身分証明書番号と携帯電話番号が変化するパラメータで後期のインタフェース自動化操作が実現されるとしたら、どのように実現すればよいのでしょうか.
ランダム
リクエストパラメータを少し変更
postmanではrandomIntを使用して実行するたびにパラメータが変化し、
/** - */
const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min; //
const getRandomValue = list => list[randomInt(0, list.length - 1)]; //
次に、ユーザー名、ニックネーム、身分証明書番号、携帯電話番号、性別を入力するランダムな入力操作を実現します.コードは以下の通りです.
/** */
const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min; //
const getRandomValue = list => list[randomInt(0, list.length - 1)]; //
//
postman.setGlobalVariable("compellation", ("0000" +
(Math.random()*Math.pow(36,7) << 0).toString(36)).slice(-7));
// , 2-6
const charsInName = [' ', ' ', ' ', ' ', ' ', ' '];
const numOfChars = randomInt(2, 6);
let randomName = '';
for (let i = 0; i < numOfChars; i++) {
let index = randomInt(0, 5);
randomName += charsInName[index];
}
//environment.nickname = randomName;
postman.setGlobalVariable("nickname",randomName);
/**
//
postman.setEnvironmentVariable("nickname", ("0000" +
(Math.random()*Math.pow(36,4) << 0).toString(36)).slice(-4));
*/
//
const divisions = ['O', 'M', 'F'];
// environment ? environment
//environment.sex = getRandomValue(divisions);
postman.setGlobalVariable("sex",getRandomValue(divisions));
//postman.setEnvironmentVariable("sex","O");
//
//postman.setEnvironmentVariable("card","500106200412055816");
postman.setGlobalVariable("card",`50010620001208${randomInt(1000, 9999)}`);
// ( )
// 2017-1-1, 1970-1-1 47 , 1923-1-1 ~ 2017-1-1
//environment.birthday = randomInt(0 - Date.now(), Date.now());
//postman.setEnvironmentVariable("birthday",Date.now());
/**
// ,
var d = new Date();
// 2
var timeDate = d.getDate().toString();
if(timeDate.length == 1){
timeDate = "0" + timeDate;
}
//
var timesDate = d.getFullYear() + "-"+(d.getMonth()+1).toString() +"-"+ timeDate;
postman.setEnvironmentVariable("birthday", timesDate);
*/
postman.setGlobalVariable("birthday", '2000-12-08');
//
//environment.height = '${randomInt(120, 221)}';
//environment.height = randomInt(120, 221);
postman.setGlobalVariable("height",randomInt(120, 221));
//
//environment.weight = '${randomInt(40, 150)}';
//environment.height = randomInt(40, 150);
postman.setGlobalVariable("weight",randomInt(40, 150));
//remark
// remark
postman.setGlobalVariable("remark", ("test" +
(Math.random()*Math.pow(36,4) << 0).toString(36)).slice(-4));
//
//environment.phone = `18${randomInt(100000000, 999999999)}`;
postman.setGlobalVariable("phone",`18${randomInt(100000000, 999999999)}`);
これによりインタフェースのパラメータ化が実現され,ユーザに入力されるインタフェースPre-Request Scriptコードは以下のようになる.
//
sessionId = postman.getGlobalVariable("sessionId");
customerCode = postman.getGlobalVariable("customerCode");
timestamp = postman.getGlobalVariable('timestamp');
ytoken = postman.getGlobalVariable("ytoken");
unicode = postman.getGlobalVariable("unicode");
var pytokenstr = sessionId + customerCode+unicode+timestamp+ytoken;
//postman.setEnvironmentVariable("str",str);
//environment.str = str;
postman.setGlobalVariable("pytokenstr",pytokenstr);
//var md5 = CryptoJS.MD5(str).toString().toLowerCase();
// md5 ptoken
//var strmd5 = CryptoJS.MD5(str).toString();
var ptoken = CryptoJS.MD5(pytokenstr);
//environment.strmd5 = strmd5;
postman.setGlobalVariable('ptoken',ptoken);
/** */
const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min; //
const getRandomValue = list => list[randomInt(0, list.length - 1)]; //
//
postman.setGlobalVariable("compellation", ("0000" +
(Math.random()*Math.pow(36,7) << 0).toString(36)).slice(-7));
// , 2-6
const charsInName = [' ', ' ', ' ', ' ', ' ', ' '];
const numOfChars = randomInt(2, 6);
let randomName = '';
for (let i = 0; i < numOfChars; i++) {
let index = randomInt(0, 5);
randomName += charsInName[index];
}
//environment.nickname = randomName;
postman.setGlobalVariable("nickname",randomName);
/**
//
postman.setEnvironmentVariable("nickname", ("0000" +
(Math.random()*Math.pow(36,4) << 0).toString(36)).slice(-4));
*/
//
const divisions = ['O', 'M', 'F'];
// environment ? environment
//environment.sex = getRandomValue(divisions);
postman.setGlobalVariable("sex",getRandomValue(divisions));
//postman.setEnvironmentVariable("sex","O");
//
//postman.setEnvironmentVariable("card","500106200412055816");
postman.setGlobalVariable("card",`50010620001208${randomInt(1000, 9999)}`);
// ( )
// 2017-1-1, 1970-1-1 47 , 1923-1-1 ~ 2017-1-1
//environment.birthday = randomInt(0 - Date.now(), Date.now());
//postman.setEnvironmentVariable("birthday",Date.now());
/**
// ,
var d = new Date();
// 2
var timeDate = d.getDate().toString();
if(timeDate.length == 1){
timeDate = "0" + timeDate;
}
//
var timesDate = d.getFullYear() + "-"+(d.getMonth()+1).toString() +"-"+ timeDate;
postman.setEnvironmentVariable("birthday", timesDate);
*/
postman.setGlobalVariable("birthday", '2000-12-08');
//
//environment.height = '${randomInt(120, 221)}';
//environment.height = randomInt(120, 221);
postman.setGlobalVariable("height",randomInt(120, 221));
//
//environment.weight = '${randomInt(40, 150)}';
//environment.height = randomInt(40, 150);
postman.setGlobalVariable("weight",randomInt(40, 150));
//remark
// remark
postman.setGlobalVariable("remark", ("test" +
(Math.random()*Math.pow(36,4) << 0).toString(36)).slice(-4));
//
//environment.phone = `18${randomInt(100000000, 999999999)}`;
postman.setGlobalVariable("phone",`18${randomInt(100000000, 999999999)}`);
console.log(pytokenstr);
部分コードリファレンスhttps://testerhome.com/topics/6641
次にpotmanでbodyに図のように設定します
その後Testsにアサーション情報を追加し,コードは以下の通りである.
// ===,
//tests['Status code is 200'] = responseCode.code === 200);
// 'success'
if(responseCode.code===200 & responseBody !== null & responseBody.has("code") ){
tests["Body matches code"] = responseBody.has("0");
var jsonData = JSON.parse(responseBody);
postman.setGlobalVariable("userId",jsonData.result.user_id);
tests[`[INFO] Request params: ${JSON.stringify(request.data)}`] = true;
// user_id,
tests["have result "]=jsonData.hasOwnProperty("result")===true;
tests[`[INFO] Response timeout: ${responseTime}`] = responseTime < 6000;
}
else{
//
tests["Waring:Request Failed. Please Fix!"] = false;
}
上記のコードでは、
var jsonData = JSON.parse(responseBody); postman.setGlobalVariable("userId",jsonData.result.user_id);
を用いてインタフェースの応答結果のuser_を再び取得するidの値は次のインタフェースのパラメータとして、そのインタフェースの応答結果コードは図のように{
"result": {
"birthday": "2000-12-08",
"phone": "18271263485",
"sex": "O",
"register_time": "2017-11-30 10:49:43",
"weight": "109",
"height": "184",
"remark": "fdn1",
"organization_id": "1149",
"compellation": "-pm6eil",
"card": "500106200012081705",
"user_id": 1638
},
"code": "0"
}
この2つの異なるインタフェース応答結果の取値により,この構造型の応答結果の取値に容易に対応できる.あとは他のインタフェースの応答結果に出会って値を取って、またゆっくり蓄積していきましょう・・・
転載先:https://www.cnblogs.com/LOVEYU/p/7929471.html