開源接口自動化平臺sosotest的使用心得

開始接觸接口測試的時候,使用的jmeter,當時還是一個同事給分享了jmeter的基本操作功能。

後來研究接口自動化,想要利用jmeter來做這個,逐漸用上了數據庫連接,前置,後置等略微高級一些的功能。

但jmeter在接口測試的過程中的方便是不言而喻的,但是總給人一種以呆板的感覺。

於是在接口自動化探索的道路上摸摸索索。

混跡testerhome開源版塊也有不少的接口自動化開源項目,最有名的應該是httprunner,試了下不是我的菜。

還有其他幾個開源平臺也試用了下,個人感覺跟我的思想不是很契合。

直到利用pytest +allure 來做的時候,覺得還不錯,但是要寫代碼,對有些同學來說門檻略高,如果想寫代碼搞接口自動化,強推pytest+allure。爲啥我放棄了呢,因爲在這個時候我發現了一個更好用的開源接口自動化平臺sosotest。

安裝,部署我就不說了,官方使用手冊很清楚。

sosotest在testerhome上頁面,官方羣284333313 (我不是託) 我現在是sosotest的小迷妹了。

https://testerhome.com/opensource_projects/sosotest

碰到的一個坑:所有的服務部署在windows本機上貌似有點問題,部署到服務器上去之後就木有問題了 。

主要來說說,這個開源的平臺是如何與我思想的契合,其實我也只發現了其冰山的一腳。

1.重要的斷言

sosotest中叫斷言恢復,爲啥叫斷言恢復呢?

因爲這個斷言中不僅僅可以寫斷言哦,還可以恢復。

啥叫恢復?

比如你的接口是添加某個數據,裏面有個標題是‘aaaa’,且這個標題是不能重複的。那你在執行這個接口後,數據庫裏有了一條‘aaa’的數據,當你下次再執行這個接口的時候,就不能添加成功了。

恢復的妙用就是在這裏。

有兩種方法:

1.直接執行sql語句,將這條數據刪除

2.執行與此添加接口相反的刪除接口

以上兩種方法都可以直接寫到斷言恢復中,相當於對此接口產生新數據的清理工作,這點在自動化測試中很有用。

如上圖所示:在斷言恢復中的幾個步驟

1.斷言

2.數據庫查詢(經測試貌似不支持連表查詢)

3.通過json提取message_id,這個提取出來的值可以給下一個接口使用哦,後面講準備的時候講。這些方法在其平臺上都有詳細說明

4.執行清理接口

2.重要的準備

準備相當於jmeter裏的前置條件,jmeter如果加前置可能會需要好幾個步驟,這裏也是幾個步驟,但是操作十分方便。

準備中有很多事情可以操作。

比如執行接口,查詢數據取值,引用組合文本,大可以發揮你的想象。

且在準備中執行的接口,如果該接口有斷言恢復中有取出變量,那麼在當前的接口可以直接使用這個變量哦,妥妥的好用。

值得一說便是這個組合文本。可以看到創建一個組合文本之後,他可以統一或單獨設置不同環境的文本值。

劃重點,這個很有用!如下面的兩個圖所示。

你可以將測試環境,線上環境單獨設置文本值,然後在執行接口的時候,選擇相應的環境,就可以使用相應環境的變量,這樣做到數據,業務分離,同一套腳本只要選擇不同的環境就可以分別執行相應環境的數據了。

亮點:

可以在你編寫接口的時候直接調試,錯誤信息,返回啥的也非常詳細,這點和jmter是差不多的,多了的內容就是選擇環境,完全展示準備和斷言恢復中的內容。

支持python模式和數據關鍵字模式。用起來賊溜。

對於那種一個接口多個用例的情況有以下兩種思路:

1.寫多個接口(反正可以複製)然後將這些接口添加到業務流中

2.用python實現,官方也有詳細說明大致如下(抄官方代碼)

寫在準備裏面,大致試驗了下,下面是一個登錄的接口。

# python
userlist = [
        {"account":"18668219620","pwd":"111111"},
        {"account":"18668219620","pwd":"1111123"}]
totalcount, passcount, failcount = 0,0,0
expected = '"errorCode":"0"'
for user in userlist:
    execute_current() # 執行當前接口的執行信息,使用變量user
    # 輸出執行後的輸入和輸出信息
    log("processedHeader: %s" % context.processedHeader)
    log("processedUrl: %s" % context.processedUrl)
    log("processedParams: %s" % context.processedParams)
    log("processedBodyContent: %s" % context.processedBodyContent)
    retContent = const("RESP_TEXT")
    log("retContent: %s" % retContent)
    # 對返回結果進行判斷。
    if expected in retContent:
        passcount += 1
        log("PASS")
    else:
        failcount += 1
        log("FAIL")

# 開始設置測試結果,如果有失敗則失敗,否則全部成功。
if failcount > 0:
    set_result("FAIL","測試未通過,失敗%d次。" % failcount)
else:
    set_result("PASS","測試通過.")

後續就是將你的接口腳本添加到業務流,再將業務流添加到任務,就可以美美的執行了,執行完了還有美美的報告。

這些就不細說了,使用手冊裏面都有。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章