postman重构对比测试脚本
背景
项目要使用java对老服务重构,需要测试老服务与新服务的接口是否有差异,用postman内置的js模块实现
try{
var java_data = JSON.parse(responseBody)
// delete java_data['request_id']
// 0 --> 0.00
function returnFloat(value){
var value=Math.round(parseFloat(value)*100)/100;
var xsd=value.toString().split(".");
if(xsd.length==1){
value=value.toString()+".00";
return value;
}
if(xsd.length>1){
if(xsd[1].length<2){
value=value.toString()+"0";
}
return value;
}
}
function getDiffer(php_list, java_list) {
return php_list.concat(java_list).filter(function(value, index, arr) {
return arr.indexOf(value) === arr.lastIndexOf(value);
})
}
var java_list_key = []
var java_list_value = []
var java_list_data_value = []
// code=200 --> key --> key_list
if (java_data.code === 200){
for (var java_key in java_data){
java_list_key.push(java_key)
// java_list_value.push(java_data[java_key])
}
// key --> key_list
for (var java_data_key in java_data.data){
java_list_key.push(java_data_key)
// =dict --> value_list 0 --> 0.00
if (typeof java_data.data[java_data_key] == 'object'){
for (var java_data_value in java_data.data[java_data_key]){
java_list_key.push(java_data_value.toString())
// console.log(java_data_value)
// console.log(java_data.data[java_data_key][java_data_value])
java_list_data_value.push(returnFloat(java_data.data[java_data_key][java_data_value]))
}
}
// !=dict --> value_list
else{
// console.log(java_data.data[java_data_key])
java_list_value.push(java_data.data[java_data_key])
}
}
java_list_key = java_list_key.sort()
java_list_data_value = java_list_data_value.sort()
// console.log('java_key: ', java_list_key)
// console.log('java_value: ', java_list_data_value)
}
}catch(error){
console.error("ERROR —————— JAVA 错误: " + error.name + ": " + error.message)
}
try{
// php 域名
var php_url = pm.environment.get('php_url')
// 请求地址
var path = php_url + pm.request.url.getPath()
// console.log('php 请求地址 : ' + path);
// 获取请求参数
var request_data = pm.request.body.formdata.all()
var urlencoded_data = ''
for (var request_data_value in request_data){
urlencoded_data = urlencoded_data + request_data[request_data_value].key + '=' + request_data[request_data_value].value + '&'
// console.log(request_data[request_data_value].value);
}
var urlencoded_data = urlencoded_data.substring(0, urlencoded_data.length-1)
// console.log('请求参数 : ' + urlencoded_data)
// php 请求参数
const request_body = {
url : path,
method : 'POST',
header : 'Content-Type:application/x-www-form-urlencoded',
body : {
mode : 'urlencoded',
urlencoded : urlencoded_data
}
}
// 发送请求
pm.sendRequest(request_body, function (err, res) {
// 判断返回 code 是否一致
var php_code = res.json().code
pm.test("java 与 php 返回 code 是否一致", function () {
pm.expect(java_data.code).to.eql(php_code)
});
// 判断返回 msg 是否一致
if ('操作成功' != java_data.msg || null != res.json().msg ){
pm.test("java 与 php 返回 msg 是否一致",function(){
var php_msg = res.json().msg
pm.expect(java_data.msg).to.eql(php_msg)
});
}
console.log('java data : ', java_data, ' php data : ', res.json())
var php_data = res.json()
var php_list_key = []
var php_list_value = []
var php_list_data_value = []
// code=200 --> key --> key_list
if (php_data.code === 200){
for (var php_key in php_data){
php_list_key.push(php_key)
}
// key --> key_list
for (var php_data_key in php_data.data){
php_list_key.push(php_data_key)
// =dict --> value_list 0 --> 0.00
if (typeof php_data.data[php_data_key] == 'object'){
for (var php_data_value in php_data.data[php_data_key]){
php_list_key.push(php_data_value.toString())
php_list_data_value.push(returnFloat(php_data.data[php_data_key][php_data_value]))
}
}
// !=dict --> value_list
else{
// console.log(java_data.data[java_data_key])
php_list_value.push(php_data.data[php_data_key])
}
}
php_list_key = php_list_key.sort()
php_list_data_value = php_list_data_value.sort()
// console.log('php_key: ', php_list_key)
// console.log('php_value: ', php_list_data_value)
if (java_list_key.toString() == php_list_key.toString() && java_list_data_value.toString() == php_list_data_value.toString()){
// console.log('java 与 php 返回 data 一致')
}
else if(java_list_key.toString() != php_list_key.toString()){
// console.log('返回 key 不一致 : ', 'java data : ', java_data, ' php data : ', res.json())
// console.log('返回 key != : ', getDiffer(java_list_key, php_list_key))
}
else if(java_list_data_value.toString() != php_list_data_value.toString()){
// console.log('返回 value 不一致 : ', 'java data : ', java_data, ' php data : ', res.json())
// console.log('以下 value不一致 : ', getDiffer(java_list_data_value, php_list_data_value))
}
else if(java_list_key.toString() != php_list_key.toString() && java_list_data_value.toString() != php_list_data_value.toString()){
// console.log('返回 key value 均不一致 : ', 'java data : ', java_data, ' php data : ', res.json())
// console.log('返回 value 不一致 : ', 'java value : ', java_list_data_value, 'php value : ', php_list_data_value)
// console.log('返回 key != : ', getDiffer(java_list_key, php_list_key))
// console.log('返回 value != : ', getDiffer(java_list_data_value, php_list_data_value))
}
// 判断返回 data 是否一致
pm.test("java 与 php 返回 data 是否一致", function () {
pm.expect(java_list_key).to.eql(php_list_key) && pm.expect(java_list_data_value).to.eql(php_list_data_value)
})
}});
}catch(error){
console.error("ERROR —————— PHP 错误: " + error.name + ": " + error.message)
}

浙公网安备 33010602011771号