Skip to content

Commit 7e21128

Browse files
committed
自动化测试:初步完成账号交叉测试
1 parent 1751d72 commit 7e21128

File tree

2 files changed

+92
-36
lines changed

2 files changed

+92
-36
lines changed

index.html

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@
9393
<a style="border-bottom: #DDD 1px solid;width: 100%" href="javascript:void(0)" @click="showConfig(true, 0)">数据库类型Database: {{ database || '点击设置' }}</a>
9494
<a style="border-bottom: #DDD 1px solid;width: 100%" href="javascript:void(0)" @click="showConfig(true, 1)">数据库模式Schema: {{ schema || '点击设置' }}</a>
9595
<a style="border-bottom: #DDD 1px solid;width: 100%" href="javascript:void(0)" @click="showConfig(true, 2)">生成代码(封装,解析): {{ language || '点击设置' }}</a>
96-
<a style="border-bottom: #DDD 1px solid;width: 100%" href="javascript:void(0)" @click="showConfig(! isDelegateEnabled, 9)">{{ isDelegateEnabled ? '关闭' : '开启' }}托管服务器代理: {{ isDelegateEnabled ? '代理中' : '直接访问' }}</a>
96+
<a style="border-bottom: #DDD 1px solid;width: 100%" href="javascript:void(0)" @click="showConfig(! isDelegateEnabled, 9)">服务器代理: {{ isDelegateEnabled ? '已开启,点击关闭' : '已关闭,点击开启' }}</a>
9797
<a v-show="User.id == null || User.id <= 0" style="border-bottom: #DDD 1px solid;width: 100%" href="javascript:void(0)" @click="showConfig(true, 7)">使用的请求类型: {{ types == null || types.length <= 0 ? '点击设置' : types.join() }}</a>
9898
<a style="border-bottom: #DDD 1px solid;width: 100%" href="javascript:void(0)" @click="showConfig(StringUtil.isEmpty(host, true), 3)">{{ StringUtil.isEmpty(host, true) ? '隐藏(固定)URL Host: 可用空格隔开' : '显示(编辑)URL Host: \n' + host }}</a>
9999
<a style="border-bottom: #DDD 1px solid;width: 100%;display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 1; overflow: hidden;" href="javascript:void(0)" @click="showConfig(! isRandomShow, 5)">{{ isRandomShow ? '隐藏(固定)随机测试 Random Test' : '显示(编辑)随机测试 Random Test' }}</a>
@@ -133,6 +133,7 @@
133133

134134
<a style="display: flex;flex-grow: 1;font-size: medium;color: black" class="hint--top save-tool" data-hint="点击切换" href="javascript:void(0)" @click="showTestCase(true, ! isLocalShow)">测试用例:{{ (isLocalShow ? '本地历史(' : '远程共享(') + (testCases == null ? 0 : testCases.length) + ')' }}</a>
135135

136+
<a v-show="! isLocalShow" class="hint--top save-tool" data-hint="点击切换" href="javascript:void(0)" @click="enableCross(! isCrossEnabled)">{{ crossProcess }}</a>
136137
<a v-show="! isLocalShow" class="hint--top save-tool" data-hint="点击切换" href="javascript:void(0)" @click="enableML(! isMLEnabled)">{{ testProcess }}</a>
137138
<a v-show="! isLocalShow" class="hint--top @cli-tool" data-hint="回归测试" href="javascript:void(0)" @click="test()">
138139
<img class="icon" src="img/refresh.png"/>
@@ -147,7 +148,7 @@
147148
<ul v-show="isTestCaseShow" class="historys" style="width: 100%;height: 100%;overflow: hidden;overflow-y: scroll;padding-bottom: 50px">
148149
<li v-for="(item, index) in testCases" >
149150
<div style="display: inline-table">
150-
<button v-show="types != null && types.length > 1" style="width: 48px;margin-right: 6px;position: relative" id="vDocType" @click="restoreRemoteAndTest(item)">{{ getTypeName(item.Document.type) }}</button>
151+
<button v-show="types != null && types.length > 1" style="width: 48px;margin-right: 6px;padding: 0px;position: relative" id="vDocType" @click="restoreRemoteAndTest(item)">{{ getTypeName(item.Document.type) }}</button>
151152
<a class="hint--rounded hint--no-animate" ref="testCaseTexts" @mouseover="setRequestHint(index, item)" href="javascript:void(0)" @click="restoreRemote(item)" > {{(item.Document.version > 0 ? 'V' + item.Document.version : 'V*') + ' ' + item.Document.name + ' ' + item.Document.url}}</a>
152153
<div :style="{ background: item.compareColor }" v-show="item.compareType != null" style="position: absolute;top: 8px;right: 36px;display: inline-block;">
153154
<button class="hint--left" ref="testResultButtons" @mouseover="setTestHint(index, item)" v-show="item.compareType != null" @click="handleTest(false, index, item)" style="position: relative;">{{ item.compareMessage + (item.showType == 'before' ? '-前' : '-后') }}</button>

js/main.js

Lines changed: 89 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -507,6 +507,7 @@
507507
],
508508
currentAccountIndex: 0,
509509
tests: [],
510+
crossProcess: '交叉账号:已关闭',
510511
testProcess: '机器学习:已关闭',
511512
randomTestTitle: null,
512513
testRandomProcess: '',
@@ -529,6 +530,7 @@
529530
loginType: 'login',
530531
isExportRemote: false,
531532
isRegister: false,
533+
isCrossEnabled: false,
532534
isMLEnabled: false,
533535
isDelegateEnabled: false,
534536
isLocalShow: false,
@@ -1505,7 +1507,12 @@
15051507

15061508

15071509

1508-
onClickAccount: function (index, item) {
1510+
onClickAccount: function (index, item, callback) {
1511+
if (index < 0 || item == null) {
1512+
callback(false)
1513+
return
1514+
}
1515+
15091516
if (this.currentAccountIndex == index) {
15101517
this.setRememberLogin(item.remember)
15111518
vAccount.value = item.phone
@@ -1519,6 +1526,10 @@
15191526
item.isLoggedIn = false
15201527
App.saveCache(App.getBaseUrl(), 'currentAccountIndex', App.currentAccountIndex)
15211528
App.saveCache(App.getBaseUrl(), 'accounts', App.accounts)
1529+
1530+
if (callback != null) {
1531+
callback(false)
1532+
}
15221533
});
15231534
}
15241535
else {
@@ -1536,6 +1547,10 @@
15361547

15371548
App.saveCache(App.getBaseUrl(), 'currentAccountIndex', App.currentAccountIndex)
15381549
App.saveCache(App.getBaseUrl(), 'accounts', App.accounts)
1550+
1551+
if (callback != null) {
1552+
callback(true)
1553+
}
15391554
}
15401555
});
15411556
}
@@ -1555,7 +1570,7 @@
15551570

15561571
//目前还没做到同一标签页下测试账号切换后,session也跟着切换,所以干脆每次切换tab就重新登录
15571572
item.isLoggedIn = false
1558-
this.onClickAccount(index, item)
1573+
this.onClickAccount(index, item, callback)
15591574
},
15601575

15611576
removeAccountTab: function () {
@@ -2876,6 +2891,12 @@
28762891
return doc
28772892
},
28782893

2894+
enableCross: function (enable) {
2895+
this.isCrossEnabled = enable
2896+
this.crossProcess = enable ? '交叉账号:已开启' : '交叉账号:已关闭'
2897+
this.saveCache(App.server, 'isCrossEnabled', enable)
2898+
},
2899+
28792900
enableML: function (enable) {
28802901
this.isMLEnabled = enable
28812902
this.testProcess = enable ? '机器学习:已开启' : '机器学习:已关闭'
@@ -3159,7 +3180,22 @@
31593180
3-对象缺少字段/整数变小数,黄色;
31603181
4-code/值类型 改变,红色;
31613182
*/
3162-
test: function (isRandom) {
3183+
test: function (isRandom, accountIndex) {
3184+
var accounts = this.accounts || []
3185+
alert('test accountIndex = ' + accountIndex)
3186+
var isCrossEnabled = this.isCrossEnabled
3187+
if (accountIndex == null) {
3188+
accountIndex = -1 //isCrossEnabled ? -1 : 0
3189+
}
3190+
if (isCrossEnabled) {
3191+
var isCrossDone = accountIndex >= accounts.length
3192+
this.crossProcess = isCrossDone ? (isCrossEnabled ? '交叉账号:已开启' : '交叉账号:已关闭') : ('交叉账号: ' + accountIndex + '/' + accounts.length)
3193+
if (isCrossDone) {
3194+
alert('test isCrossDone')
3195+
return
3196+
}
3197+
}
3198+
31633199
var baseUrl = StringUtil.trim(App.getBaseUrl())
31643200
if (baseUrl == '') {
31653201
alert('请先输入有效的URL!')
@@ -3183,46 +3219,59 @@
31833219
alert('请先获取测试用例文档\n点击[查看共享]图标按钮')
31843220
return
31853221
}
3186-
App.testProcess = '正在测试: ' + 0 + '/' + allCount
31873222

3188-
for (var i = 0; i < allCount; i ++) {
3189-
const item = list[i]
3190-
const document = item == null ? null : item.Document
3191-
if (document == null || document.name == null) {
3192-
doneCount ++
3193-
continue
3194-
}
3195-
if (document.url == '/login' || document.url == '/logout') { //login会导致登录用户改变为默认的但UI上还显示原来的,单独测试OWNER权限时能通过很困惑
3196-
App.log('test document.url == "/login" || document.url == "/logout" >> continue')
3197-
doneCount ++
3198-
continue
3199-
}
3200-
App.log('test document = ' + JSON.stringify(document, null, ' '))
32013223

3202-
const index = i
3224+
if (accountIndex < 0 && isCrossEnabled) { //退出登录已登录的账号
3225+
accounts[this.currentAccountIndex].isLoggedIn = true
3226+
}
32033227

3204-
var header = null
3205-
try {
3206-
header = App.getHeader(document.header)
3207-
} catch (e) {
3208-
App.log('test for ' + i + ' >> try { header = App.getHeader(document.header) } catch (e) { \n' + e.message)
3209-
}
3228+
var index = accountIndex < 0 && isCrossEnabled ? this.currentAccountIndex : accountIndex
3229+
this.onClickAccount(index, accounts[index], function(isLoggedIn) {
3230+
App.showTestCase(true, false)
3231+
3232+
App.testProcess = '正在测试: ' + 0 + '/' + allCount
3233+
3234+
for (var i = 0; i < allCount; i++) {
3235+
const item = list[i]
3236+
const document = item == null ? null : item.Document
3237+
if (document == null || document.name == null) {
3238+
doneCount++
3239+
continue
3240+
}
3241+
if (document.url == '/login' || document.url == '/logout') { //login会导致登录用户改变为默认的但UI上还显示原来的,单独测试OWNER权限时能通过很困惑
3242+
App.log('test document.url == "/login" || document.url == "/logout" >> continue')
3243+
doneCount++
3244+
continue
3245+
}
3246+
App.log('test document = ' + JSON.stringify(document, null, ' '))
32103247

3211-
App.request(false, document.type, baseUrl + document.url, App.getRequest(document.request), header, function (url, res, err) {
3248+
const index = i
32123249

3250+
var header = null
32133251
try {
3214-
App.onResponse(url, res, err)
3215-
App.log('test App.request >> res.data = ' + JSON.stringify(res.data, null, ' '))
3252+
header = App.getHeader(document.header)
32163253
} catch (e) {
3217-
App.log('test App.request >> } catch (e) {\n' + e.message)
3254+
App.log('test for ' + i + ' >> try { header = App.getHeader(document.header) } catch (e) { \n' + e.message)
32183255
}
32193256

3220-
App.compareResponse(allCount, index, item, res.data, isRandom)
3221-
})
3222-
}
3257+
App.request(false, document.type, baseUrl + document.url, App.getRequest(document.request), header, function (url, res, err) {
3258+
3259+
try {
3260+
App.onResponse(url, res, err)
3261+
App.log('test App.request >> res.data = ' + JSON.stringify(res.data, null, ' '))
3262+
} catch (e) {
3263+
App.log('test App.request >> } catch (e) {\n' + e.message)
3264+
}
3265+
3266+
App.compareResponse(allCount, index, item, res.data, isRandom, accountIndex)
3267+
})
3268+
}
3269+
3270+
})
3271+
32233272
},
32243273

3225-
compareResponse: function (allCount, index, item, response, isRandom) {
3274+
compareResponse: function (allCount, index, item, response, isRandom, accountIndex) {
32263275
var it = item || {} //请求异步
32273276
var d = (isRandom ? App.currentRemoteItem.Document : it.Document) || {} //请求异步
32283277
var r = isRandom ? it.Random : null//请求异步
@@ -3233,10 +3282,10 @@
32333282
var standardKey = App.isMLEnabled != true ? 'response' : 'standard'
32343283
var standard = StringUtil.isEmpty(tr[standardKey], true) ? null : JSON.parse(tr[standardKey]);
32353284
tr.compare = JSONResponse.compareResponse(standard, releaseResponse, '', App.isMLEnabled) || {}
3236-
App.onTestResponse(allCount, index, it, d, r, tr, response, tr.compare || {}, isRandom);
3285+
App.onTestResponse(allCount, index, it, d, r, tr, response, tr.compare || {}, isRandom, accountIndex);
32373286
},
32383287

3239-
onTestResponse: function(allCount, index, it, d, r, tr, response, cmp, isRandom) {
3288+
onTestResponse: function(allCount, index, it, d, r, tr, response, cmp, isRandom, accountIndex) {
32403289

32413290
doneCount ++
32423291
App.testProcess = doneCount >= allCount ? (App.isMLEnabled ? '机器学习:已开启' : '机器学习:已关闭') : '正在测试: ' + doneCount + '/' + allCount
@@ -3295,6 +3344,10 @@
32953344
console.log('tests = ' + JSON.stringify(tests, null, ' '))
32963345
// App.showTestCase(true)
32973346

3347+
if (doneCount >= allCount && App.isCrossEnabled) {
3348+
alert('onTestResponse accountIndex = ' + accountIndex)
3349+
App.test(false, accountIndex + 1)
3350+
}
32983351
},
32993352

33003353
/**移除调试字段
@@ -3600,7 +3653,9 @@
36003653

36013654
try { //可能URL_BASE是const类型,不允许改,这里是初始化,不能出错
36023655
this.User = this.getCache(this.server, 'User') || {}
3656+
this.isCrossEnabled = this.getCache(this.server, 'isCrossEnabled') || this.isCrossEnabled
36033657
this.isMLEnabled = this.getCache(this.server, 'isMLEnabled') || this.isMLEnabled
3658+
this.crossProcess = this.isCrossEnabled ? '交叉账号:已开启' : '交叉账号:已关闭'
36043659
this.testProcess = this.isMLEnabled ? '机器学习:已开启' : '机器学习:已关闭'
36053660
} catch (e) {
36063661
console.log('created try { ' +

0 commit comments

Comments
 (0)