Python自動(dòng)化之?dāng)?shù)據(jù)驅(qū)動(dòng)讓你的腳本簡潔10倍【推薦】

前言
數(shù)據(jù)驅(qū)動(dòng)是一種思想,讓數(shù)據(jù)和代碼進(jìn)行分離,比如爬蟲時(shí),我們需要分頁爬取數(shù)據(jù)時(shí),我們往往把頁數(shù) page 參數(shù)化,放在 for 循環(huán) range 中,假如沒有 range 這個(gè)自帶可以生產(chǎn)數(shù)字序列的方法可以用,我們是不是得手動(dòng)逐個(gè)添加?

現(xiàn)實(shí)場景中就存在大量這樣的例子,比如我之前寫的爬取上海各地區(qū)房租情況的時(shí)候,對(duì)地區(qū)進(jìn)行遍歷的時(shí)候,為了偷懶,我直接把這些地區(qū)的拼音全稱放在了列表里,組合成各地區(qū)房源的鏈接。最后文章寫完了,有讀者反饋,少了徐匯區(qū)的統(tǒng)計(jì)數(shù)據(jù)。這種小數(shù)量的數(shù)據(jù)都出現(xiàn)了紕漏,可想而知,對(duì)于大量的數(shù)據(jù),怎么保證數(shù)據(jù)的完整和準(zhǔn)確性?我們需要把兩者分離,數(shù)據(jù)專門儲(chǔ)存在特定文件(比如 Excel 文件)。

舉一個(gè)小栗子:登錄流程,在測(cè)試的時(shí)候,除了測(cè)試登錄成功的場景,我們往往需要測(cè)到各種登錄異常的場景。
寫幾條很常見的案例如下:

比如上面寫了 5 條案例,數(shù)據(jù)和腳本不做分離的話,我們寫自動(dòng)化測(cè)試腳本需要寫 5 條。

5 條案例中,腳本都是基本一樣的,只是輸入框輸入的數(shù)據(jù)不一樣罷了。

數(shù)據(jù)分離
我們完全可以把數(shù)據(jù)存儲(chǔ)在 Excel 表中,我們通過循環(huán)讀取 Excel 表中的數(shù)據(jù)來實(shí)現(xiàn)一條腳本執(zhí)行多條數(shù)據(jù)。
我們先封裝一個(gè)操作 Excel 文件的類,需要先安裝導(dǎo)入包 openpyxl。
我們用這個(gè)庫可以做一下功能:讀取表格數(shù)據(jù)、保存執(zhí)行結(jié)果。
我們先在類下寫一個(gè)打開 Excel 文件的初始化方法,構(gòu)造方法的作用是,當(dāng)類被實(shí)例化后,會(huì)立即調(diào)用構(gòu)造方法。

讀取表格數(shù)據(jù)
然后我們寫一個(gè)讀取 Excel 數(shù)據(jù)的方法,讀取數(shù)據(jù)后返回?cái)?shù)據(jù)列表,以便之后調(diào)用獲取對(duì)應(yīng)的數(shù)據(jù),因?yàn)榈?1 列數(shù)據(jù)是序號(hào),所以直接返回第 2 列之后的數(shù)據(jù)。

保存執(zhí)行結(jié)果
實(shí)際結(jié)果和預(yù)期結(jié)果對(duì)比后,我們需要標(biāo)記執(zhí)行結(jié)果是 pass 或者 fail,我們需要保存結(jié)果,保存到對(duì)應(yīng)的單元格中。

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

這樣的話,我們腳本就不用寫 5 條了,調(diào)用 Excel 文件的數(shù)據(jù),循環(huán)執(zhí)行案例即可,不僅邏輯清晰,還方便了后期的維護(hù)。

這樣,測(cè)試數(shù)據(jù)和腳本分離后,不同的測(cè)試數(shù)據(jù)用不同的 Excel 文件保存即可。
吃飯時(shí)或者下班時(shí)執(zhí)行下測(cè)試腳本,吃完飯后或者第二天上班時(shí),查看下 Excel 里的執(zhí)行結(jié)果,有 fail 再手動(dòng)看看能否復(fù)現(xiàn),是不是很高效?
總結(jié)
以上所述是小編給大家介紹的Python自動(dòng)化之?dāng)?shù)據(jù)驅(qū)動(dòng)讓你的腳本簡潔10倍,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
- Python Selenium 之?dāng)?shù)據(jù)驅(qū)動(dòng)測(cè)試的實(shí)現(xiàn)
- python自動(dòng)化測(cè)試之DDT數(shù)據(jù)驅(qū)動(dòng)的實(shí)現(xiàn)代碼
- python ddt數(shù)據(jù)驅(qū)動(dòng)最簡實(shí)例代碼
- 解決python 未發(fā)現(xiàn)數(shù)據(jù)源名稱并且未指定默認(rèn)驅(qū)動(dòng)程序的問題
- 利用Python如何實(shí)現(xiàn)數(shù)據(jù)驅(qū)動(dòng)的接口自動(dòng)化測(cè)試
- python ddt實(shí)現(xiàn)數(shù)據(jù)驅(qū)動(dòng)
- Python+unittest+DDT實(shí)現(xiàn)數(shù)據(jù)驅(qū)動(dòng)測(cè)試
相關(guān)文章
python中將函數(shù)賦值給變量時(shí)需要注意的一些問題
變量賦值是我們?cè)谌粘i_發(fā)中經(jīng)常會(huì)遇到的一個(gè)問題,下面這篇文章主要給大家介紹了關(guān)于python中將函數(shù)賦值給變量時(shí)需要注意的一些問題,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧。2017-08-08
使用numpy對(duì)數(shù)組求平均時(shí)如何忽略nan值
這篇文章主要介紹了使用numpy對(duì)數(shù)組求平均時(shí)如何忽略nan值,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02
Django中的JWT身份驗(yàn)證的實(shí)現(xiàn)
這篇文章主要介紹了Django中的JWT身份驗(yàn)證的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05
Python科學(xué)計(jì)算包numpy用法實(shí)例詳解
這篇文章主要介紹了Python科學(xué)計(jì)算包numpy用法,結(jié)合實(shí)例形式詳細(xì)分析了Python基于科學(xué)計(jì)算包numpy在數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)處理及科學(xué)計(jì)算等方面的相關(guān)操作技巧,需要的朋友可以參考下2018-02-02
Python實(shí)現(xiàn)數(shù)據(jù)庫并行讀取和寫入實(shí)例
本篇文章主要介紹了Python實(shí)現(xiàn)數(shù)據(jù)庫并行讀取和寫入實(shí)例,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-06-06
pytorch torch.nn.AdaptiveAvgPool2d()自適應(yīng)平均池化函數(shù)詳解
今天小編就為大家分享一篇pytorch torch.nn.AdaptiveAvgPool2d()自適應(yīng)平均池化函數(shù)詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-01-01

