1、案例描述
-
用戶選擇短信登錄
短信登錄.png -
發(fā)送短信后橡淑,后端接口邏輯已把驗(yàn)證碼緩存在redis构拳,
redis數(shù)據(jù).png - 在
apifox
上定義對(duì)應(yīng)下發(fā)登錄短信接口
,短信登錄接口
下發(fā)登錄短信接口.png
短信登錄接口.png - 這時(shí)候問(wèn)題就來(lái)了梁棠,怎么樣才能讓
apifox
自動(dòng)獲取下發(fā)登錄短信接口
對(duì)應(yīng)的手機(jī)號(hào)的驗(yàn)證碼置森,自動(dòng)填充到短信登錄接口
的code
字段?
怎么自動(dòng)獲取驗(yàn)證碼.jpg
2符糊、解決思路
- 方案一:后端通過(guò)接口返回驗(yàn)證碼凫海,下發(fā)短信接口后再調(diào)用該接口去獲取驗(yàn)證碼(正式環(huán)境需要屏蔽該接口,沒(méi)辦法自動(dòng)化正式環(huán)境接口)
- 方案二:
apifox
直接訪問(wèn)redis獲取數(shù)據(jù)男娄;這需要在apifox
添加擴(kuò)展操作redis的jar包行贪,參考:https://www.apifox.cn/help/app/scripts/api-references/external-programs/ (該方案比較可行)
3、開(kāi)始動(dòng)手
編寫(xiě)操作redis擴(kuò)展jar包(可參考https://github.com/Atoms-Cat/apifox-code的apifox-redis模塊)
-
創(chuàng)建自動(dòng)化測(cè)試用例模闲,我是從
接口管理
的接口用例
直接導(dǎo)入(這個(gè)工具真香建瘫,重用性強(qiáng)??)
導(dǎo)入接口用例.png -
把
phone
、code
請(qǐng)求參數(shù)給為臨時(shí)變量{{phone}}
尸折、{{code}}
下發(fā)登錄短信用例.png
短信登錄用例.png 新建
短信登錄用例
前置自定義腳本,這里的apifox-redis-1.0-SNAPSHOT.jar
实夹,就是第一步生成好的jar橄浓;腳本編寫(xiě)可以參考:https://www.apifox.cn/help/app/scripts/pre-request-script/#%E4%BD%BF%E7%94%A8%E7%A4%BA%E4%BE%8B
try {
// redis 連接配置
var redisConfig = "{\"host\":\"192.168.181.130\",\"password\":\"123456\",\"database\":0}";
// 獲取當(dāng)前登錄的手機(jī)號(hào)
var phone = pm.variables.get("phone");
// 后端服務(wù)緩存驗(yàn)證碼在redis的key
var key = "DEFAULT_CODE_KEY:" + phone;
console.log("redis key:", key);
// 執(zhí)行jar包獲取redis緩存數(shù)據(jù)
var jarResult = pm.execute('apifox-redis-1.0-SNAPSHOT.jar', [redisConfig, "GET", key]);
console.log("redis 緩存數(shù)據(jù):", jarResult);
// 反序列化異常處理
var code = jarResult.substr(jarResult.length-7, 6);
// 自動(dòng)填充驗(yàn)證碼到登錄接口的`code`字段
pm.variables.set("code", code);
console.log("驗(yàn)證碼:", code);
} catch (e) {
console.error(e.message);
}
短信登錄用例前置自定義腳本.png
-
新增
測(cè)試數(shù)據(jù)
,這里新增手機(jī)號(hào)對(duì)應(yīng)臨時(shí)變量{{phone}}
測(cè)試數(shù)據(jù).png -
注意
: 需要打開(kāi)測(cè)試數(shù)據(jù)
開(kāi)關(guān)亮航,后點(diǎn)擊運(yùn)行
運(yùn)行測(cè)試用例.png -
查看結(jié)果
自動(dòng)化結(jié)果.png
登錄接口返回參數(shù).png
apifox操作redis運(yùn)行結(jié)果.png
4荸实、總結(jié)
apifox提供了非常好的自動(dòng)化測(cè)試接口的功能
自動(dòng)化測(cè)試登錄接口流程.jpg
參考demo源碼
# 后端接口服務(wù)源碼
https://github.com/Atoms-Cat/softswitch-system
# apifox 擴(kuò)展操作 redis jar源碼
https://github.com/Atoms-Cat/apifox-code