metersphere 介面自動化中sql場景使用

良辰美景2019發表於2024-08-27

摘要:

本文詳細介紹了在介面自動化測試中如何連線資料庫、編寫SQL、獲取執行結果,如何處理需要多次查詢資料並進行依賴性比較的問題,包括迴圈控制、SQL查詢中使用迴圈變數、計數器的應用以及結果比較的斷言。

一、使用場景
在介面自動化測試過程中,有時需要從資料庫中多次查詢資料,並對查詢結果進行比較,查詢的前後存在依賴,介面需要獲取迴圈處理多條記錄。

二、實際場景例項

1.資料庫連線設定,操作步驟:專案環境--資料配置

2.建立sql介面

3.應用到場景中,先查詢結果表資訊,根據結果表的欄位作為條件,用於後續源資料查詢語句的條件,並根據源資料算術運算後的結果和結果表的實際結果進行比較

(1)從訂單表和售後表裡查詢出需要退款的訂單號db_order_no欄位資訊用於後續查詢件,db_real_amount欄位用於後續介面使用

(2)源資料查詢
以查詢出來的的db_order_no的欄位為條件,在訂單表裡,迴圈查詢原始資料。

難點1:

如何進行迴圈控制?
a.使用場景用例的迴圈控制器,選擇次數迴圈。

獲取sql查詢結果行數:${列名_#} ,本場景中實際變數是:${db_order_no_#}

難點2

如何在sql查詢條件中使用前一步驟結果列單行作為變數賦值?
獲取sql查詢結果(按列儲存的方式): ${列表名_n}

例如:獲取第一行的order_no值:${order_no_1}

如何在迴圈控制器中,獲取迴圈次數具體值?
使用計數器:${__counter(,)} , 從1開始。

存在的問題,在第一次迴圈時,計數器輸出結果為2,導致第一行的order_no無法取到、且最後一行取值越界。

解決方案:前置指令碼中處理計數值,並設定為場景變數,用於後續引用

難點3

如何在迴圈控制器中使用前一步驟的查詢結果列作為下個介面的入參?
分析:單行查詢條件,需要${order_no_行號}的格式。

解決方案:使用${__V(變數名)}函式,結合計數器,生成變數名錶達式,本例中 ​​​​​${__V(order_no_${count})}。隨著每一次迴圈,其結果對應${order_no_1}、${order_no_2}...實際的列欄位值。

相關文章