在前一篇文章(中,寫了在測試方法中迴圈讀取同一引數。今天要介紹的是不同於前一篇文章中寫的2種策略。這次的策略更完善,已經付諸實踐,在專案測試中取得了成效。
首先介紹乙個新概念:執行次序(迭代次序)。
先舉個栗子:testa()方法測試的是使用者登入,裡面有2個變數username、password。現在我要測試2個不同使用者名稱密碼的使用者執行testa()方法。
原有的做法:外部資料定義格式(username1,password1)、(username2,password2),以此來區分不同時間取不同的變數次數,可缺點也隨之而來:邏輯**裡面是username,資料檔案中變成了username1,容易混淆,不易理解。
現在的做法:外部資料定義格式(username,password,1)、(username,password,2),裡面的數字就是迭代的次序。第一次迭代的時候取前面括號裡面的變數,第二次的時候取後面括號中的內容。
此次的更新,涉及到資料庫表結構變更(資料驅動的資料持久化存在資料庫中),資料管理web前端的修改,服務後端的修改。雖然涉及的地方很多,但長痛不如短痛,為了以後更方便,下決心改!
資料管理平台變更如下圖:
介面測試工具類中增加如下方法:
//得到測試所需引數的方法
public static string queryvalue(string classname,string methodname,string paramname,int executeorder)
} catch (sqlexception e)
if(paramvalue==null) catch (exception e)
} con.closeconnect();
return paramvalue;
}//得到此測試方法的最大迭代次數方法
public static int getmaxorder(string classname,string methodname,string paramname)
} catch (sqlexception e)
con.closeconnect();
return maxrow;
}
具體到介面測試**中的運用,sample
**如下:
/**
* */
package com.cpsdna.saasapi.test.common;
import static org.junit.assert.*;
import org.apache.log4j.logger;
import org.junit.test;
import com.cpsdna.test.util.dbutil;
import com.cpsdna.test.util.paramutil;
/** * @author chenyong
* @time 2013-11-4 下午2:01:49
*/public class paramtest else
for(int j=1;j<=iterationnum;j++)
//具體的測試邏輯**寫在這裡
}
}catch (exception e)
log.info("end "+paramutil.getclassname()+"."+paramutil.getmethodname()+"()++++++++++");
}}
ok,上面就是變更邏輯之後的一些地方。
待改進的地方:
1.資料管理的web端,引數資料輸入的時候還是不太方便,一次只能輸入乙個。
2.準備把資料庫中的引數資料儲存成json格式,一組對應一次迭代。
一步一步......
for迴圈迭代列表的常用方法
1.什麼是for迴圈 for 迴圈又稱為計數迴圈,是因為 for 迴圈次數由可迭代物件來決定,我們學過的字串就是可迭代物件。例如 列表 元組 字典 集合等都屬於可迭代物件。現在大家可以用for迴圈來判斷物件是否是可迭代的。2.簡單的寫乙個for迴圈 for迴圈可以把字串裡面的每個元素都依次取出來,自...
js 測試迴圈中斷方法在不同迭代方法中的效果
let arrtest 1,2,3,4,5,6,7 1 測試break return 在for of for for in foreach 中效果 測試結果 for of for foreach for in return errow errow 無效果 errow break yes yes er...
junit測試方法執行順序
junit 4.11裡增加了指定測試方法執行順序的特性 測試類的執行順序可通過對測試類新增註解 fixmethodorder value 來指定,其中value 為執行順序 三種執行順序可供選擇 預設 methodsorters.default 按方法名 methodsorters.name asc...