Python自動化之資料驅動,讓你的指令碼簡潔10倍

2021-09-24 03:45:17 字數 1910 閱讀 4304

前言

上次在分享 python 的 unittest 框架時,文末提到過資料驅動。

資料驅動是一種思想,讓資料和**進行分離,比如爬蟲時,我們需要分頁爬取資料時,我們往往把頁數 page 引數化,放在 for 迴圈 range 中,假如沒有 range 這個自帶可以生產數字序列的方法可以用,我們是不是得手動逐個新增?

現實場景中就存在大量這樣的例子,比如我之前寫的爬取上海各地區房租情況的時候(上海的房租有多高?我用python爬蟲為你揭曉),對地區進行遍歷的時候,為了偷懶,我直接把這些地區的拼音全稱放在了列表裡,組合成各地區**的鏈結。最後文章寫完了,有讀者反饋,少了徐匯區的統計資料。這種小數量的資料都出現了紕漏,可想而知,對於大量的資料,怎麼保證資料的完整和準確性?我們需要把兩者分離,資料專門儲存在特定檔案(比如 excel 檔案)。

舉乙個小栗子:登入流程,在測試的時候,除了測試登入成功的場景,我們往往需要測到各種登入異常的場景。

寫幾條很常見的案例如下:

比如上面寫了 5 條案例,資料和指令碼不做分離的話,我們寫自動化測試指令碼需要寫 5 條。

5 條案例中,指令碼都是基本一樣的,只是輸入框輸入的資料不一樣罷了。

資料分離

我們完全可以把資料儲存在 excel 表中,我們通過迴圈讀取 excel 表中的資料來實現一條指令碼執行多條資料。

我們先封裝乙個操作 excel 檔案的類,需要先安裝匯入包 openpyxl。

我們用這個庫可以做一下功能:讀取**資料、儲存執行結果。

讀取**資料

然後我們寫乙個讀取 excel 資料的方法,讀取資料後返回資料列表,以便之後呼叫獲取對應的資料,因為第 1 列資料是序號,所以直接返回第 2 列之後的資料。

儲存執行結果

實際結果和預期結果對比後,我們需要標記執行結果是 pass 或者 fail,我們需要儲存結果,儲存到對應的單元格中。

我們看看我們的案例格式:

這樣的話,我們指令碼就不用寫 5 條了,呼叫 excel 檔案的資料,迴圈執行案例即可,不僅邏輯清晰,還方便了後期的維護。

這樣,測試資料和指令碼分離後,不同的測試資料用不同的 excel 檔案儲存即可。

吃飯時或者下班時執行下測試指令碼,吃完飯後或者第二天上班時,檢視下 excel 裡的執行結果,有 fail 再手動看看能否復現,是不是很高效?

python 自動化UI測試之 資料驅動

from selenium import webdriver import unittest,time,os import logging,traceback import ddt from selenium.common.exceptions import nosuchelementexcepti...

python 資料驅動自動化測試指令碼

class db con sql 資料庫連線類 def db con config 資料庫連線引數配置 ipadderss user passwd port 33306 return ipadderss,user,passwd,port 資料庫訪問連線 def con get account try...

Python自動化 資料驅動(通過Excel)

1 python資料驅動,需要匯入python第三方包,進行對行和列的讀取,存入python可以使用的資料型別 如list,dict 具體 示例如下 from openpyxl import load workbook class parseexcel def init self,excelpath...