數據驅動(四)
阿新 • • 發佈:2017-10-26
tails value packages tin gravity out robot 如果 例如
數據驅動
RIDE提供的庫:
- Create List
- Get File
- Import Variables
- Template
- ExcelLibrary
自定義庫:DataCenter.py
- Read Data From Excel
- Read Excel File
- Read CSV File
- Read Column From Excel
- Get Sheet Values From Excel
一、數據驅動測試註重於測試軟件的功能性需求,也即數據驅動測試執行程序所有功能需求的輸入條件。實現KISS。
二、ExcelLibrary方式
還是以登錄測試為例討論ExcelLibrary方式。
安裝:pip install robotframework-excellibrary
數據文件:%{G_DATACENTER}\login_info.xls
- 數據目錄
- 數據源
Excel問題:對長度過長的數字以科學計數的格式處理,結果改變了密碼值。
解決方案:
- 在單元格數字前加上英文單引號’:例如,’123456787901234567890
- 先改單元格格式為文本,再輸入數字:右擊單元格,設置單元格格式,選擇“文本”
- 修改單元格自定義格式: 右擊單元格,設置單元格格式,選擇“自定義”,類型改”G/通用格式”
用例:
- 打開Excel文件:Open Excel
- 獲取每一列內容:Get Column Values
- 登錄網站:GUI_Login
- 斷言:用戶名與密碼是否正確
讀取Excel的缺點和問題:
- 缺點:其存儲方式是讀取的每一項內容都會加上列名,對於數據的處理不是特別優雅。
源代碼:C:\Python27\Lib\site-packages\ExcelLibrary\ExcelLibrary.py
- 問題:python讀取數字的時候,把所有的數字都變成了浮點數。用例因為數據錯誤而 FAIL。
- 修改源代碼,處理浮點數的問題
定義兩個方法:
def _keep_integer_type_from excel(self, value):
def _is_number(self, value):
功能實現:如果輸入是數字而且是整數,去掉浮點數並存儲為字符串類型。在輸入用戶名和密碼時,如果是整型或者浮點型都會報錯。
- 問題:用方法 def _keep_integer_type_from excel(self, value) 轉換數據時,因為過長的數字不再以科學計數的格式處理。python讀取時,存儲為unicode類型。所以,return str(int(value))報錯,“not all arguments converted during string formatting”。
修改方法 def _keep_integer_type_from excel(self, value),讓其不再轉換unicode類型數據。當然,也可以把Excel數據全部以上面三個解決方案處理而無需增加python的兩個方法(def _keep_integer_type_from excel(self, value) & def _is_number(self, value))。不過,這樣一來也失去了程序的靈活性(flexibility)。
數據驅動(四)