網(wǎng)站首頁 編程語言 正文
引言
做接口測試中,對于一般性的單業(yè)務(wù)接口測試很多工具可供選擇,但是對于一些相關(guān)業(yè)務(wù)相關(guān)性的關(guān)聯(lián)接口測試就比較麻煩,使用工具比如jmeter、postman、soapui等等就比較麻煩。
我比較偏重腳本化執(zhí)行測試用例,所以選擇了groovy作為主要語言來進行接口測試,但是腳本依賴的庫還是基于之前所在的java為主的測試框架,有興趣的可以翻翻以前的文章。
項目的架構(gòu)思路是以模塊為基礎(chǔ)把接口分類,然后對于接口的請求單獨進行實現(xiàn)。通過一個user作為一個用戶,攜帶各種屬性,如:uname,pwd,token,userinfobean等信息。來作為各個模塊類之間的信息傳遞。
回到修改密碼接口,簡單說一下我們接口的邏輯,先登錄,獲取token作為用戶身份的唯一校驗值,修改密碼接口參數(shù),newpwd,oldpwd,token。成功之后會返回新的token,作為用戶繼續(xù)其他操作的校驗值。
測試腳本代碼
分享一下自己的測試腳本代碼:
class T8 extends OkayBase {
public static void main(String[] args) {
int thread =changeStringToInt(args[0])
int times =changeStringToInt(args[1])
List<ThreadBase> threads = new ArrayList<>()
for (int i = 0; i < thread; i++) {
OkayBase base = getBase(i)
UserCenter userCenter = new UserCenter(base)
userCenter.modifyPwd()
ThreadBase threadBase = new ThreadBase() {
@Override
protected void before() {
}
@Override
protected void doing() throws Exception {
userCenter.modifyPwd()
}
@Override
protected void after() {
}
}
threadBase.setTimes(times)
threads.add(threadBase)
}
new Concurrent(threads).start()
allOver()
}
}
usercenter主要代碼
main方法留了兩個參數(shù)表示線程數(shù)和單線程請求數(shù),下面是usercenter的主要代碼。
public class UserCenter extends OkayBase {
private static Logger logger = LoggerFactory.getLogger(UserCenter.class);
public UserCenter(OkayBase okayBase) {
super(okayBase);
}
public JSONObject modifyPwd() {
String url = UserApi.MODIFY_PWD;
JSONObject params = getParams();
params.put("newpwd", getPassword(this.getUname()));
params.put("oldpwd", getPassword(this.getPwd()));
JSONObject response = getPostResponse(url, params);
output(response);
if (isRight(response)) {
String string = response.getJSONObject("data").getString("token");
this.setToken(string);
}
return response;
}
}
okaybase主要代碼
public class OkayBase extends SourceCode implements IBase {
private static Logger logger = LoggerFactory.getLogger(OkayBase.class);
int uid;
String token;
String uname;
String pwd;
public OkayBase(String uname, String pwd) {
this.uname = uname;
this.pwd = pwd;
login();
}
public String getPassword() {
String s = uname.substring(uname.length() - 6);
return getPassword(s);
}
public String getPassword(String pwd) {
return RSAUtils.getPassword(pwd);
}
public JSONObject getParams() {
JSONObject json = getJson("uid=" + uid, "token=" + token);
json.put("imei", "isFake");
json.put("serial", "W170500652");
json.put("ua", "f_an_4..0");
return json;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public int getUid() {
return uid;
}
public String getToken() {
return token;
}
public void setToken(String token) {
this.token = token;
}
public String getUname() {
return uname;
}
@Override
public boolean isRight(JSONObject jsonObject) {
int code = TEST_ERROR_CODE;
try {
code = jsonObject.getJSONObject("meta").getInt("ecode");
JSONObject data = jsonObject.getJSONObject("data");
return code == 0 && !data.isEmpty();
} catch (Exception e) {
return false;
}
}
/**
* 測試結(jié)束,資源釋放
*/
public static void allOver() {
FanLibrary.testOver();
}
}
原文鏈接:https://mp.weixin.qq.com/s/9CL_6-uZOlAh7oeo7NOpag
相關(guān)推薦
- 2022-06-08 golang操作rocketmq的示例代碼_Golang
- 2022-07-30 Git操作相關(guān)問題(pull/push/clone/)
- 2024-01-29 深入了解 Spring BeanPostProcessor 的應(yīng)用
- 2022-06-28 C語言簡明清晰講解結(jié)構(gòu)體_C 語言
- 2022-04-01 簡單聊聊C++中回調(diào)函數(shù)的實現(xiàn)_C 語言
- 2023-01-28 架構(gòu)師說比起404我們更怕200錯誤_相關(guān)技巧
- 2023-02-07 Hive數(shù)據(jù)去重的兩種方式?(distinct和group?by)_數(shù)據(jù)庫其它
- 2022-03-14 Linux磁盤格式化和掛載(linux服務(wù)器硬盤掛載步驟)
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支