Soapui接口功能測(cè)試參數(shù)化

image.png
  • 按照自動(dòng)化測(cè)試分層實(shí)現(xiàn)的原理,每一層的腳本實(shí)現(xiàn)都要進(jìn)行參數(shù)化岳悟,自動(dòng)化的目標(biāo)就是要實(shí)現(xiàn)腳本代碼與測(cè)試數(shù)據(jù)分離佃迄。
  • 當(dāng)測(cè)試數(shù)據(jù)進(jìn)行調(diào)整的時(shí)候不會(huì)對(duì)腳本的實(shí)現(xiàn)帶來震蕩,從而提高腳本的穩(wěn)定性與靈活度贵少,降低腳本的維護(hù)成本呵俏。
  • Soapui最為強(qiáng)大的參數(shù)化就是支持groovy腳本的參數(shù)化或者java代碼,任何無法實(shí)現(xiàn)的地方都可以考慮腳本的擴(kuò)展滔灶。

1.Soapui的常用參數(shù)化類型

image.png

2.Soapui參數(shù)化操作方式

菜單路徑:Test Steps->Add Step(右鍵菜單)->Data Source


image.png

3.Txt 文件參數(shù)化

  • 新建txt文件
image.png
  • 文件內(nèi)容

數(shù)據(jù)之間要用逗號(hào)做分隔符普碎,否則soapui沒辦法區(qū)分?jǐn)?shù)據(jù)


image.png
  • 選擇數(shù)據(jù)源類型與文件

1.增加參數(shù)
2.選擇數(shù)據(jù)類型
3.選擇數(shù)據(jù)文件
4.數(shù)據(jù)的分隔符


image.png

4.Excel文件參數(shù)化

  • 新建excel文件
image.png
  • 編輯文件內(nèi)容
image.png
  • 選擇數(shù)據(jù)源類型與文件

1.增加參數(shù)
2.選擇數(shù)據(jù)類型
3.選擇數(shù)據(jù)文件
4.起始單元格


image.png

5.Groovy腳本參數(shù)化

groovy是基于java語言的腳本語 言,語法結(jié)構(gòu)與java雷同录平,或者直接寫java代碼也是可以的

  • 假設(shè)我們要通過接口創(chuàng)建客戶

要求:姓名麻车,手機(jī)號(hào)碼,email不能重復(fù)

1.隨機(jī)生成姓名的代碼
public List<String> RandomUserName(int RandomUserName) {
    String[] FirstName = ["趙","錢", "孫", "李", "周", "吳", "鄭", "王", "馮", "陳", "褚", "衛(wèi)", "蔣", "沈", "韓", "楊", "朱", "秦", "尤", "許",
        "何", "呂", "施", "張", "孔", "曹", "嚴(yán)", "華", "金", "魏", "陶", "姜", "戚", "謝", "鄒", "喻", "柏", "水", "竇", "章", "云", "蘇", "潘", "葛", "奚", "范", "彭", "郎",
        "魯", "韋", "昌", "馬", "苗", "鳳", "花", "方", "俞", "任", "袁", "柳", "酆", "鮑", "史", "唐", "費(fèi)", "廉", "岑", "薛", "雷", "賀", "倪", "湯", "滕", "殷"];
    List<String> randomName = new ArrayList<>();
    for (int i = 1; i <= RandomUserName; i++) {
        Random randomFirstName = new Random();
        int index = randomFirstName.nextInt(FirstName.length - 1);
        String name = FirstName[index];
        if(randomFirstName.nextBoolean()){
            name += getChinese()+getChinese();
            randomName.add(name);
        }
        else{
            name += getChinese();
            randomName.add(name);
        }
    }
    return randomName;
}
public static String getChinese() {
    String str = null;
    int highPos, lowPos;
    Random randomChinese = new Random();
    highPos = (176 + Math.abs(randomChinese.nextInt(55)))
    randomChinese = new Random();
    lowPos = 161 + Math.abs(randomChinese.nextInt(94))

    byte[] bArr = new byte[2];
    bArr[0] = (new Integer(highPos)).byteValue();
    bArr[1] = (new Integer(lowPos)).byteValue();
    try {
        str = new String(bArr, "GB2312");
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    }
    return str;
}
2.隨機(jī)生成手機(jī)號(hào)的代碼
public List<String> RandomTelNum(int RandomTel) {
    List<String> RandomTelNum = new ArrayList<>();
    for (int i = 0; i < RandomTel; i++) {
        String TelNumHead = "170";
        int min = 10000000;
        int max = 99999999;
        Random randomTelLast = new Random();
        int s = randomTelLast.nextInt(max) % (max - min + 1) + min;
        String telNum = TelNumHead + Integer.toString(s);
        RandomTelNum.add(telNum);
    }
    return RandomTelNum;
}
3.隨機(jī)生成Email的代碼
public List<String> RandomEmail(int RandomEmail) {
    List<String> randomEmail = new ArrayList<>();
    for (int i = 0; i < RandomEmail; i++) {
        String[]  randomName = "ab,bc,cd,de,ef,fg,gh,hi,ij,jk,kl,lm,mn,no,op,pq,qr,rs,st,tu,uv,vw,wx,xy,yz,za".split(",");
        Random randomletter = new Random();
        int index = randomletter.nextInt(26);
        String EmailName = randomName[index] +randomName[index/3]+ System.currentTimeMillis();
        EmailName += getemail_suffix();
        randomEmail.add(EmailName);
    }
    return randomEmail;
}
public static String getemail_suffix() {
    String[] email_suffix = "@gmail.com,@yahoo.com,@msn.com,@hotmail.com,@aol.com,@ask.com,@live.com,@qq.com,@0355.net,@163.com,@163.net,@263.net,@3721.net,@yeah.net,@googlemail.com,@126.com,@sina.com,@sohu.com,@yahoo.com.cn".split(",");
    String str;
    Random randomEmail_suffix = new Random();
    int index = randomEmail_suffix.nextInt(email_suffix.length - 1);
    str = email_suffix[index];
    return str;
}
  • 運(yùn)行的效果
image.png
  • 代碼產(chǎn)生的數(shù)據(jù)與變量關(guān)聯(lián)
//隨機(jī)生成姓名
println(RandomUserName(1)[0]);
//代碼產(chǎn)生的數(shù)據(jù)與變量關(guān)聯(lián)
result["name"]=RandomUserName(1)[0]
//隨機(jī)生成郵箱
println(RandomEmail(1)[0]);
//代碼產(chǎn)生的數(shù)據(jù)與變量關(guān)聯(lián)
result["email"]=RandomEmail(1)[0]
//隨機(jī)生成手機(jī)號(hào)碼
println(RandomTelNum(1)[0]);
//代碼產(chǎn)生的數(shù)據(jù)與變量關(guān)聯(lián)
result["mobile"]=RandomTelNum(1)[0]

6.JDBC參數(shù)化

當(dāng)接口產(chǎn)生的數(shù)據(jù)需要從數(shù)據(jù)庫讀取的時(shí)候我們可以連接數(shù)據(jù)對(duì)數(shù)據(jù)查詢進(jìn)行數(shù)據(jù)關(guān)聯(lián),soapui是可以鏈接多種數(shù)據(jù)庫斗这,我們使用mysql做演示

  • mysql驅(qū)動(dòng)配置

1.下載mysql驅(qū)動(dòng)的jar包
http://pan.baidu.com/s/1ge5BLhL
2.拷貝驅(qū)動(dòng)jar到如下路徑(soapui的安裝路徑)
C:\Program Files\SmartBear\SoapUI-Pro-5.1.2\jre\lib\ext

  • 配置數(shù)據(jù)源

數(shù)據(jù)庫連接成功动猬,說明數(shù)據(jù)源已經(jīng)配置好


image.png
  • 編輯SQL

select userName,passWord from user

image.png

7.參數(shù)關(guān)聯(lián)到Request

這一步雖然比較簡單,但是至關(guān)重要表箭,否則參數(shù)化是體現(xiàn)不出來的


image.png
自此Soapui常用參數(shù)化過程就剖析到這里枣察,下一篇我會(huì)帶著大家一起看requet間,testCase間的數(shù)據(jù)傳遞燃逻,歡迎伙伴們持續(xù)關(guān)注序目,謝謝。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末伯襟,一起剝皮案震驚了整個(gè)濱河市猿涨,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌姆怪,老刑警劉巖叛赚,帶你破解...
    沈念sama閱讀 211,290評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異稽揭,居然都是意外死亡俺附,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門溪掀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來事镣,“玉大人,你說我怎么就攤上這事揪胃×в矗” “怎么了氛琢?”我有些...
    開封第一講書人閱讀 156,872評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長随闪。 經(jīng)常有香客問我阳似,道長,這世上最難降的妖魔是什么铐伴? 我笑而不...
    開封第一講書人閱讀 56,415評(píng)論 1 283
  • 正文 為了忘掉前任撮奏,我火速辦了婚禮,結(jié)果婚禮上当宴,老公的妹妹穿的比我還像新娘挽荡。我一直安慰自己,他們只是感情好即供,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評(píng)論 6 385
  • 文/花漫 我一把揭開白布定拟。 她就那樣靜靜地躺著,像睡著了一般逗嫡。 火紅的嫁衣襯著肌膚如雪青自。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,784評(píng)論 1 290
  • 那天驱证,我揣著相機(jī)與錄音延窜,去河邊找鬼。 笑死抹锄,一個(gè)胖子當(dāng)著我的面吹牛逆瑞,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播伙单,決...
    沈念sama閱讀 38,927評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼获高,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼!你這毒婦竟也來了吻育?” 一聲冷哼從身側(cè)響起念秧,我...
    開封第一講書人閱讀 37,691評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎布疼,沒想到半個(gè)月后摊趾,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,137評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡游两,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評(píng)論 2 326
  • 正文 我和宋清朗相戀三年砾层,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片贱案。...
    茶點(diǎn)故事閱讀 38,622評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡肛炮,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情铸董,我是刑警寧澤,帶...
    沈念sama閱讀 34,289評(píng)論 4 329
  • 正文 年R本政府宣布肴沫,位于F島的核電站粟害,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏颤芬。R本人自食惡果不足惜悲幅,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望站蝠。 院中可真熱鬧汰具,春花似錦、人聲如沸菱魔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽澜倦。三九已至聚蝶,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間藻治,已是汗流浹背碘勉。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留桩卵,地道東北人验靡。 一個(gè)月前我還...
    沈念sama閱讀 46,316評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像雏节,于是被迫代替她去往敵國和親胜嗓。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理钩乍,服務(wù)發(fā)現(xiàn)兼蕊,斷路器,智...
    卡卡羅2017閱讀 134,629評(píng)論 18 139
  • ¥開啟¥ 【iAPP實(shí)現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個(gè)線程件蚕,因...
    小菜c閱讀 6,365評(píng)論 0 17
  • 方法1 (數(shù)據(jù)類型)(最小值+Math.random()*(最大值-最小值+1)) 例: (int)(1+Math...
    GB_speak閱讀 40,974評(píng)論 2 6
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法孙技,類相關(guān)的語法,內(nèi)部類的語法排作,繼承相關(guān)的語法牵啦,異常的語法,線程的語...
    子非魚_t_閱讀 31,598評(píng)論 18 399
  • 1妄痪、不安全的隨機(jī)數(shù)生成哈雏,在CSRF TOKEN生成、password reset token生成等,會(huì)造成toke...
    nightmare丿閱讀 3,680評(píng)論 0 1