在設(shè)計(jì)自動(dòng)化測(cè)試框架的時(shí)候,我們會(huì)經(jīng)常將測(cè)試數(shù)據(jù)保存在外部的文件(如Excel、YAML、CSV)或者數(shù)據(jù)庫(kù)中,實(shí)現(xiàn)腳本與數(shù)據(jù)解耦,方便后期維護(hù)。目前非常多的自動(dòng)化測(cè)試框架采用通過Excel或者YAML文件直接編寫測(cè)試用例,通過腳本讀取出來驅(qū)動(dòng)自動(dòng)化測(cè)試代碼執(zhí)行。
在金城江等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站設(shè)計(jì)、做網(wǎng)站 網(wǎng)站設(shè)計(jì)制作按需網(wǎng)站策劃,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),網(wǎng)絡(luò)營(yíng)銷推廣,成都外貿(mào)網(wǎng)站建設(shè)公司,金城江網(wǎng)站建設(shè)費(fèi)用合理。至于采用Excel還是YAML格式各位小伙伴都有不同見解,比如用Excel維護(hù)直觀、修改數(shù)據(jù)方便,劣勢(shì)是通過Git這樣的版本控制工具不太好比較歷史版本差異(因?yàn)槭嵌M(jìn)制格式);YAML的優(yōu)勢(shì)是支持?jǐn)?shù)據(jù)格式完備、版本控制管理方便(文本格式),劣勢(shì)是沒有Excel這么直觀。Excel這種方式大家都比較熟悉了,本文帶著大家來了解如何基于YAML設(shè)計(jì)自動(dòng)化測(cè)試框架。
YAML格式測(cè)試用例設(shè)計(jì)
以接口自動(dòng)化為例,用YAML編寫測(cè)試用例要實(shí)現(xiàn)的基本功能需求:
1.一個(gè)YAML文件能夠支持多個(gè)用例存儲(chǔ)需求,不然幾千個(gè)用例對(duì)應(yīng)幾千個(gè)YAML文件管理起來也受不了
2.用例中能夠支持單接口測(cè)試用例也能支持業(yè)務(wù)場(chǎng)景用例(多個(gè)接口調(diào)用組合)
3.用例中需要包含所屬模塊、用例名、請(qǐng)求信息、斷言信息、提取響應(yīng)(實(shí)現(xiàn)接口關(guān)聯(lián))等信息
基于上述需求我們來設(shè)計(jì)一版YAML格式用例:
casename與module字段簡(jiǎn)單,我們來看下teststeps,為什么teststeps是數(shù)組類型?
因?yàn)橛美邪粋€(gè)/多個(gè)接口請(qǐng)求步驟,也就是一個(gè)TestCase包含了多個(gè)teststep,每一個(gè)teststep就是一個(gè)接口請(qǐng)求。
request中指定接口請(qǐng)求信息,包括接口請(qǐng)求方法、請(qǐng)求地址、請(qǐng)求頭、請(qǐng)求參數(shù);其中不同的請(qǐng)求參數(shù)類型我們需要進(jìn)行區(qū)別,上述的是json傳參,如果是form表單、查詢參數(shù)傳參我們都可以約定為類似的key-value結(jié)構(gòu),只需要將json改為formparam、queryparam。
需要注意的是文件上傳接口的參數(shù)會(huì)比較特殊,一般來說我們只需要設(shè)置要上傳文件路徑即可,所以我們可以這樣設(shè)計(jì):
extract字段為要提取的響應(yīng)數(shù)據(jù)字段,傳遞給后續(xù)的接口使用。一般我們要求能夠支持JsonPath表達(dá)式或者正則表達(dá)式來提取,對(duì)應(yīng)的key為要提取的字段名,對(duì)應(yīng)的值為要提取的字段表達(dá)式。
validate字段是斷言信息,也就是驗(yàn)證響應(yīng)結(jié)果是否符合預(yù)期。這里我們需要支持常用的判斷方法包括:等于、大于、小于、大于等于、小于等于,通過簡(jiǎn)寫eq代替equals(等于)判斷,其他的類似:大于等于(ge)、小于等于(le)、小于(lt)、大于(gt)。
上述的是單接口測(cè)試用例,我們看下多接口串聯(lián)(業(yè)務(wù)場(chǎng)景)用例編寫的樣式:
ModifyUserProfile.yaml
在多接口測(cè)試中重要的是要能夠支持參數(shù)傳遞,這里我們?cè)谇耙粋€(gè)接口使用extract提取接口的響應(yīng)字段,在后續(xù)要使用的接口中通過${token}方式進(jìn)行引用,熟悉Jmeter接口測(cè)試工具的同學(xué)應(yīng)該非常熟悉這種格式。
腳本讀取YAML數(shù)據(jù)
在讀取YAML文件數(shù)據(jù)之前,我們首先需要了解兩個(gè)概念:序列化與反序列化
把對(duì)象轉(zhuǎn)換為字節(jié)序列的過程稱為對(duì)象的序列化;
把字節(jié)序列恢復(fù)為對(duì)象的過程稱為對(duì)象的反序列化。
而我們讀取YAML的過程就可以稱之為反序列化。
主流的編程語言都能實(shí)現(xiàn)對(duì)YAML的解析,接下來以Java語言為例講解如何讀取YAML文件的內(nèi)容:
Java中能夠?qū)崿F(xiàn)YAML序列化和反序列化的庫(kù)有很多,包括SnakeYaml、Jackson、jYaml等,使用起來大同小異。以使用Jackson為例:
步驟一:Maven POM文件中添加庫(kù)的坐標(biāo)
這里用到了jackson-databind與jackson-dataformat-yaml,其中jackson-databind是Jackson的主庫(kù),jackson-dataformat-yaml是支持YAML數(shù)據(jù)格式的庫(kù),在這里同時(shí)引入了lombok,是為了后面編寫實(shí)體類時(shí)簡(jiǎn)化一些代碼的書寫:
Lombok可以來幫助我們簡(jiǎn)化一些必須有但顯得很臃腫(比如get/set方法)的Java代碼的工具,通過使用對(duì)應(yīng)的注解,可以在編譯源碼的時(shí)候自動(dòng)生成對(duì)應(yīng)的方法。
步驟二:編寫YAML實(shí)體類
對(duì)照YAML文件內(nèi)容比如字段名(比如 “姓名”)和字段的數(shù)據(jù)類型(比如字符串),創(chuàng)建一個(gè)對(duì)應(yīng)的類,用來在 Java 中表示YAML文件的信息。目的是為了能夠?qū)AML文件保存到Java對(duì)象中(反序列化)。
TestCase實(shí)體類:
Teststep實(shí)體類:
Validate實(shí)體類:
通過Jackson讀取YAML文件內(nèi)容并保存到TestCase實(shí)體類對(duì)象中
其中new TypeReference() {}是因?yàn)樽x取到的YAML文件中有多個(gè)TestCase用例,所以我們需要定義為L(zhǎng)ist集合類型來接收。
來看看讀取之后的效果:
后續(xù)即可通過返回的testCase發(fā)起接口請(qǐng)求(比如通過REST-assured)、進(jìn)行接口斷言、提取響應(yīng)字段等操作。
如果你不想再體驗(yàn)一次學(xué)習(xí)時(shí)找不到資料,沒人解答問題,堅(jiān)持幾天便放棄的感受的話,在這里我給大家分享一些自動(dòng)化測(cè)試的學(xué)習(xí)資源,希望能給你前進(jìn)的路上帶來幫助。
視頻文檔獲取方式:這份文檔和視頻資料,對(duì)于想從事【軟件測(cè)試】的朋友來說應(yīng)該是最全面最完整的備戰(zhàn)倉(cāng)庫(kù),這個(gè)倉(cāng)庫(kù)也陪伴我走過了最艱難的路程,希望也能幫助到你!以上均可以分享,點(diǎn)下方小卡片進(jìn)群即可自行領(lǐng)取。
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
標(biāo)題名稱:如何基于YAML設(shè)計(jì)接口自動(dòng)化測(cè)試框架?看完秒會(huì)!-創(chuàng)新互聯(lián)
路徑分享:http://jinyejixie.com/article38/dhoisp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、搜索引擎優(yōu)化、網(wǎng)站設(shè)計(jì)、云服務(wù)器、品牌網(wǎng)站制作、App設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)