日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
測試高手進階之路:接口測試用好“變量”,重復驗證也不怕

 應用場景

創(chuàng)新互聯(lián)專注于企業(yè)全網(wǎng)整合營銷推廣、網(wǎng)站重做改版、霸州網(wǎng)站定制設計、自適應品牌網(wǎng)站建設、H5開發(fā)商城系統(tǒng)網(wǎng)站開發(fā)、集團公司官網(wǎng)建設、成都外貿(mào)網(wǎng)站建設公司、高端網(wǎng)站制作、響應式網(wǎng)頁設計等建站業(yè)務,價格優(yōu)惠性價比高,為霸州等各大城市提供網(wǎng)站開發(fā)制作服務。

在API的測試中,有時候需求是對整個文件進行檢驗而不是某個特定的值,或者說要對某個特定的值在不同的用例中重復地進行驗證。這種狀況下,我們最喜歡用的就是變量??梢源嫒⊥獠繑?shù)據(jù)或定義內(nèi)部變量,使代碼變得簡潔、又有可閱讀性,同時測試用例結(jié)果運行也能保持一致性。

學習要點

·如何讀取外部文件并進行文件內(nèi)容的精確對比

·如何讀取外部文件并進行文件內(nèi)容的模糊對比

·使用變量驗證某個特定的value是否出現(xiàn)

·使用變量驗證某個特定的key是否出現(xiàn)

示例中g(shù)et url: https://reqres.in/api/users/2

準備工作

如果您想跟著以下示例操作,需要做好以下配置:

·測試框架: Java + Karate + Junit 5

·語言: Java, Cucumber

·IDE: Intellij IDEA

·項目類型: Maven

創(chuàng)建測試場景

1.創(chuàng)建feature文件: testvar-use.feature

2.創(chuàng)建用例

用例一:讀取外部文件并進行文件內(nèi)容的精確對比

如下圖中測試場景:用例中發(fā)送了一個get的請求以后,期待回應的代碼是200,并列出相應的結(jié)果。代碼And match response == compareResponse 檢驗返回的結(jié)果與期待的結(jié)果是否一致 。在Background中代碼:* def compareResponse = read('classpath:src/test/resource/comparedContent.json') 定義了變量compareResponse 是讀取的文件comparedContent.json的內(nèi)容。(注:* 符號實際上可以換作 Given, 讀取文件的路徑: classpath)

如下圖所示:comparedContent.json 內(nèi)容是與 get請求返回的結(jié)果一致的。(注: json文件內(nèi)容格式一定要正確,否則會出現(xiàn)讀取文件錯誤的信息,參看常見錯誤)

用例二:讀取外部文件并進行文件內(nèi)容的模糊對比

代碼And match response == compareResponseIgnoreValue檢驗返回的結(jié)果與期待的結(jié)果是否一致 。在Background中定義變量compareResponseIgnoreValue是讀取的文件comparedContentIgnoreValue.json。與上例中所不同的是期待文件內(nèi)容并不完全與返回的相一致。

在comparedContentIgnoreValue.json 中,與上一個用例對比,這里可以看到 "text": 的值換成了"#ignore",當進行對比時,這個字段的內(nèi)容會忽略。

用例三:使用變量驗證某個特定的value是否出現(xiàn)

在用例一、用例二中,同時出現(xiàn)了代碼:And match response.ad.url == adUrl , 這里的adUrl 實際就是Background 中自定義變量 * def adUrl = 'http://statuscode.org/' 。

用例四:使用變量驗證某個特定的key是否出現(xiàn)

在下面的場景中,代碼And match response.ad.text != null 驗證了返回結(jié)果中ad下text 字段必須存在。

下面兩行代碼先定義了一個變量notPresentedKey 并且賦予對應的ad下keyNull的字段,然后再驗證notPresentedKey 不存在。這里的變量是必需的,否則會出現(xiàn)找不到路徑錯誤。(參看常見錯誤)

這個變量不能放在Background 在本示例中,因為response是發(fā)送get請求以后返回的結(jié)果,如果放在Background中,response 還沒有返回,引用就會有錯。(參看常見錯誤)

* def notPresentedKey = response.ad.keyNull

And match notPresentedKey == null

常見錯誤

1.文件讀取

用例一,用例二中,當json文件內(nèi)容格式不正確時,就會現(xiàn)如下運行錯誤:

2.不使用變量驗證不存在的字段

在用例四中,如果直接用And match response.ad.keyNull == null, 會出現(xiàn)如下錯誤信息,這是因為在驗證的時候,會先尋找對應的路徑 ad.keyNull, 在返回的結(jié)果中是不存在ad.keyNull字段的。)

3.在Background中提前引用response

字段的匹配與寫法

如下圖所示的正確Json文件格式,整個返回的內(nèi)容在karate中稱作 response。如果要想驗證data下的id字段,就可以引用 response.data.id。這里做些補充以免有些初學不清楚如何引用字段(其實這也是我開始學習時感到困惑的哦。)

結(jié)語

是不是變量特別好用啊,節(jié)省了很多寫代碼的時間哦,可以看到定義在Background 中的變量看作是全局變量,可以用在任意一個場景中。在某個場景中定義的變量可以說是局部變量。希望小伙伴們靈活靈用,為您的API 測試助力、加油。


分享標題:測試高手進階之路:接口測試用好“變量”,重復驗證也不怕
文章路徑:http://www.dlmjj.cn/article/dpooegj.html