1. 程式人生 > >數據驅動(四)

數據驅動(四)

tails value packages tin gravity out robot 如果 例如

數據驅動

RIDE提供的庫:

  1. Create List
  2. Get File
  3. Import Variables
  4. Template
  5. ExcelLibrary

自定義庫:DataCenter.py

  1. Read Data From Excel
  2. Read Excel File
  3. Read CSV File
  4. Read Column From Excel
  5. Get Sheet Values From Excel

一、數據驅動測試註重於測試軟件的功能性需求,也即數據驅動測試執行程序所有功能需求的輸入條件。實現KISS。

二、ExcelLibrary方式

還是以登錄測試為例討論ExcelLibrary方式。

技術分享

安裝:pip install robotframework-excellibrary

技術分享

數據文件:%{G_DATACENTER}\login_info.xls

  • 數據目錄

技術分享

  • 數據源

Excel問題:對長度過長的數字以科學計數的格式處理,結果改變了密碼值。

技術分享

解決方案

  1. 在單元格數字前加上英文單引號’:例如,’123456787901234567890
  2. 先改單元格格式為文本,再輸入數字:右擊單元格,設置單元格格式,選擇“文本”
  3. 修改單元格自定義格式: 右擊單元格,設置單元格格式,選擇“自定義”,類型改”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)。

技術分享

數據驅動(四)