隨着項目自動化深入和不斷完善,大部分功能都已經能完成了自動化的操作;但是在設備添加的時候,遇到了難題。添加設備的時候mac必須是服務器設備管理中已經存在的mac地址,且是沒有關聯或綁定用戶的設備信息。起初的想法是讀取文本文件取得mac地址實現自動化操作,但是此方法也是行不通的!所以這個功能暫時沒有自動化操作。后來想到可以讀取數據庫的查詢結果,這樣一來,每次添加設備的mac都可以確保是服務器上存在的,且是在用戶使用設備表中是不存在的就可以。
那么該如何實現呢?
思路:
- 打開數據庫
- 查詢表中用戶沒有使用的mac
- 將查詢結果賦值給一個變量
- mac地址中輸入該變量
說明一下:測試環境的服務器是mysql
既然robotframework需要操作數據庫,那么需要安裝執行數據庫的databaselibrary和pymysql。
安裝databaselibrary和pymysql
通過cmd命令執行:pip install robotframework-databaselibrary
cmd命令執行:pip install pymysql
如圖所示
引入DatabaseLibrary包到Robotframework
如圖
使用關鍵字操作數據庫
第一步:打開數據庫
使用Connect To Database Using Custom Params關鍵字連接數據庫,這里需要傳入2個參數pymysql和連接數據庫的信息,代碼如下
mac地址
#從服務器上獲取沒有綁定或關聯的設備號
Connect to database using custom params pymysql database='test_pre', user='test', password='test', host='127.0.0.1', port=3306
Connect to database using custom params pymysql database='test_sys', user='test', password='test', host='127.0.0.1', port=3306
第二步 執行sql語句
代碼如下
@{result} Query select mac from test_pre.device_server where mac not in (select mac from device)limit 1
log @{result[0]}
第三步:關閉連接
Disconnect From Database
代碼展示如下
mac地址
#從服務器上獲取沒有綁定或關聯的設備號
Connect to database using custom params pymysql database='test_pre', user='test', password='test', host='127.0.0.1', port=3306
Connect to database using custom params pymysql database='test_sys', user='test', password='test', host='127.0.0.1', port=3306
@{result} Query select mac from test_pre.device_server where mac not in (select mac from device)limit 1
log @{result[0]}
Disconnect From Database
${mac} convert to string @{result[0]}
log ${mac}
[Return] ${mac}
robotframework截圖所示
注意
返回值@{result[0]}是list格式,后面需要使用此返回值斷言的,所以需要轉換格式為string,${mac} convert to string @{result[0]}
query中的sql語句,注意復制粘貼的時候空格要去掉,否則執行的時候會提示報錯
這里用到了2個數據庫test_pre和test_sys,其中pre中存放服務器mac地址,而test_sys存在的是用戶關聯或綁定的mac信息。而這里我們需要的mac是存在服務器上但是沒有關聯用戶或綁定用戶的設備信息
這樣在添加用例的時候每次添加的mac都是唯一的,可以滿足我們的要求了
這里mac已經封裝關鍵字mac地址,這樣我們下次直接使用關鍵字mac地址
來生成一個新的mac地址。