博客 / 詳情

返回

Apikit 自學日記:添加測試步驟-數據庫步驟

數據庫步驟

在自動化測試用例中可以加入對數據庫的操作,常用於以下場景:

  1. 測試前對數據庫插入測試數據。
  2. 清除髒數據。
  3. 查詢 API 操作是否對數據庫生效。
  4. 如需在自動化測試中加入數據庫操作,需要進行以下2步:
  5. 在公共資源管理中添加數據庫連接信息
  6. 在測試用例中添加數據庫操作步驟

添加數據庫連接信息

進入公共資源管理-數據庫連接,添加一個數據庫連接,在彈窗中可以選擇需要連接的數據庫類型以及填寫數據庫信息即可。

注意,為了安全起見,請勿在數據庫連接中填寫任何生產環境的數據庫信息,並且建議單獨為測試用的數據庫連接創建一個僅擁有測試所需權限的數據庫賬號。防止因為誤操作等原因導致業務數據丟失。

在測試用例中添加數據庫操作步驟

進入自動化測試用例詳情頁面,點擊添加測試步驟下拉菜單,選擇 新建數據庫操作 :

選擇數據庫連接

在數據庫步驟編輯頁面,輸入步驟的名稱,選擇之前已經創建好的數據庫連接:

填寫SQL語句

在SQL語句輸入框填寫需要執行的SQL語句,可以填寫多條SQL語句,每條語句使用分號“;”進行分隔。

您可以在SQL語句中輸入特定的格式 ${參數名} 作為變量,系統會自動識別變量並生成參數的映射表顯示在SQL語句輸入框的下方,可以在輸入框中填寫參數、引用其他步驟的參數或者引用測試數據。

鼠標放置在參數值的輸入框上時,會自動顯示綁定其他步驟參數和關聯數據集變量的按鈕,您可以點擊綁定按鈕為該參數進行綁定,實現動態傳參的效果:


填寫參數傳遞信息

數據庫的返回結果可以傳遞給後續測試步驟中進行使用。

為了傳遞數據庫的返回結果,您需要進行以下幾步操作:

  1. 定義一些變量名,給後續測試步驟進行綁定。
  2. 編寫Javascript代碼解析數據庫的返回結果,並將需要傳遞的數據分別賦值給第一步中定義的變量。
  3. 在後續步驟中使用參數綁定功能,選擇數據庫步驟中定義好的變量。
  4. 需要打印出數據庫查詢結果,可以使用eo.info(db_result)打印,打印後在測試報告中查看,會返回一串json數據,查詢內容包含在result中。

在預期返回信息的表單中定義一些變量名,此時系統會自動在下方代碼框中生成變量的定義語句。

比如現在希望從數據庫執行結果中獲取user_name,則定義一個user_name的變量名:

注意,系統會自動在用户定義的參數名前添加 $db_param 的前綴,方便系統識別這是一個自定義的變量。請不要在代碼中刪掉該前綴。

編寫Javascript代碼解析數據庫的返回結果,並將user_id的數據賦值給第一步定義的user_id變量。

假設現在搜索user_name = percy得到一條數據庫記錄,我們需要取其中user_id並傳遞給後續測試步驟使用。

系統會將數據庫執行的返回結果儲存在變量 db_result 中 ,db_result 的數據結構如下圖:

因此我們為user_id 參數添加賦值語句即可:$db_param_user_id = db_result“query”“result”[“user_id”];

填寫數據庫操作結果的校驗規則
您可以設置數據庫操作結果的判斷規則,系統會根據規則對數據庫操作結果進行判斷。

校驗全部語句執行成功
系統會自動根據數據庫的返回信息判斷所有SQL語句是否執行成功,如果執行成功則認為該數據庫操作步驟測試通過。

如果在SQL語句輸入框中有多條SQL語句,需要所有SQL語句都執行成功才算是測試通過。

自定義校驗規則
您可以編寫Javascript代碼對數據庫執行的結果進行判斷。
系統會將數據庫執行的返回結果儲存在變量 db_result 中db_result的數據結構如下圖:

假設現在搜索user_name = percy得到一條數據庫記錄,我們需要取其中user_id判斷是否等於1。

在自定義校驗規則中可以使用以下的示例代碼:

//如果數據庫語句整體執行成功  
if(db_result["status"]=="success")
{
    //取出第一條語句執行的返回結果的第一條記錄中的user_id
    $user_id = db_result["query"][0]["result"][0]["user_id"];

    //判斷user_id是否為1
    if($user_id!=1)
    {
        //如果判斷user_id不為1,輸出執行失敗
        eo.stop("測試失敗");
    }
    else
    {
        //如果不返回任何信息或者使用eo.stop()終止程序,則代表校驗成功
    }
}
else
{
    //如果數據庫語句整體執行失敗,輸出自定義語句
    eo.stop("數據庫語句執行失敗");
}
user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.