版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第7章數(shù)據(jù)驅(qū)動《自動化測試應(yīng)用教程(Web+App)》學習目標/Target了解數(shù)據(jù)驅(qū)動的簡介,能夠簡述什么是數(shù)據(jù)驅(qū)動掌握文本數(shù)據(jù)驅(qū)動的實現(xiàn)方式,能夠讀取文本文件中的數(shù)據(jù)掌握基于DDT數(shù)據(jù)驅(qū)動的實現(xiàn)方式,能夠通過DDT讀取JSON數(shù)據(jù)掌握數(shù)據(jù)驅(qū)動的案例實戰(zhàn),能夠測試TPshop開源商城網(wǎng)站的登錄功能章節(jié)概述/Summary在自動化測試中,通常會遇到需要對多組不同的輸入數(shù)據(jù)進行相同的測試來驗證軟件質(zhì)量的情況。針對這種情況,可以使用數(shù)據(jù)驅(qū)動的形式實現(xiàn)對軟件的測試。當使用數(shù)據(jù)驅(qū)動測試軟件時,如果需要測試的數(shù)據(jù)量比較大,可以將這些數(shù)據(jù)存放在測試程序外的文件中,例如,YAML文件、JSON文件、Excel文件等,以便對測試數(shù)據(jù)的管理。當使用測試數(shù)據(jù)時,可以將這些數(shù)據(jù)從文件中讀取出來。本章將對數(shù)據(jù)驅(qū)動的內(nèi)容進行詳細講解。目錄/Contents01數(shù)據(jù)驅(qū)動簡介02文本數(shù)據(jù)驅(qū)動的實現(xiàn)03基于DDT數(shù)據(jù)驅(qū)動的實現(xiàn)04實戰(zhàn)演練—TPshop開源商城的登錄功能測試數(shù)據(jù)驅(qū)動簡介7.17.1.1數(shù)據(jù)驅(qū)動的概念
先定一個小目標!了解數(shù)據(jù)驅(qū)動的概念,能夠簡述什么是數(shù)據(jù)驅(qū)動7.1.1數(shù)據(jù)驅(qū)動的概念數(shù)據(jù)驅(qū)動是指從某個數(shù)據(jù)文件中讀取輸入輸出的測試數(shù)據(jù),通過測試數(shù)據(jù)來驅(qū)動測試用例的執(zhí)行,也就是測試數(shù)據(jù)決定測試結(jié)果。例如要測試乘法,如果測試數(shù)據(jù)是1和1,測試結(jié)果就是1;如果測試數(shù)據(jù)是2和2,測試結(jié)果就是4。7.1.1數(shù)據(jù)驅(qū)動的概念數(shù)據(jù)驅(qū)動本身不是一個工業(yè)級標準的概念,因此在不同的公司會有不同的解釋??梢园褦?shù)據(jù)驅(qū)動理解為一種模式或者一種思想。數(shù)據(jù)驅(qū)動技術(shù)可以使用戶將關(guān)注點放在對測試數(shù)據(jù)的構(gòu)建和維護上,而不是直接維護測試腳本,可以利用同樣的過程對不同的數(shù)據(jù)輸入進行測試。數(shù)據(jù)驅(qū)動的實現(xiàn)要依賴參數(shù)化的技術(shù)。使用數(shù)據(jù)驅(qū)動的好處是代碼的復用率高、可維護性高,有利于測試人員排查自動化測試腳本的異常問題。數(shù)據(jù)驅(qū)動的特點7.1.2測試數(shù)據(jù)的來源
先定一個小目標!了解測試數(shù)據(jù)的來源,能夠說出測試數(shù)據(jù)的主要來源方式7.1.2測試數(shù)據(jù)的來源在自動化測試的過程中,有時候需要為測試的功能模塊準備大量的測試數(shù)據(jù),此種情況不適合在代碼中寫入測試數(shù)據(jù),一方面會產(chǎn)生冗余代碼,另一方面會不利于維護數(shù)據(jù),針對此種情況可以使用數(shù)據(jù)驅(qū)動的方式來測試。7.1.2測試數(shù)據(jù)的來源在數(shù)據(jù)驅(qū)動中,測試數(shù)據(jù)的來源主要有以下幾種方式。直接定義在測試腳本中,該方式簡單直觀,但代碼和數(shù)據(jù)未實現(xiàn)真正的分離,不便于后期維護。從文件中讀取數(shù)據(jù),例如JSON、XLS或XLSX、XML、TXT等格式的文件。從數(shù)據(jù)庫中讀取數(shù)據(jù)。直接調(diào)用接口獲取數(shù)據(jù)源。本地封裝一些生成數(shù)據(jù)的方法。文本數(shù)據(jù)驅(qū)動的實現(xiàn)7.27.2文本數(shù)據(jù)驅(qū)動的實現(xiàn)
先定一個小目標!掌握文本數(shù)據(jù)驅(qū)動的實現(xiàn)方式,能夠讀取文本文件中的數(shù)據(jù)7.2文本數(shù)據(jù)驅(qū)動的實現(xiàn)在進行自動化測試時,可以將測試數(shù)據(jù)、系統(tǒng)配置等信息保存在文本文件中,當程序中需要使用這些信息時,首先會調(diào)用open()函數(shù)打開文本文件,然后調(diào)用讀取文件的方法獲取文件中的數(shù)據(jù)信息。7.2文本數(shù)據(jù)驅(qū)動的實現(xiàn)打開文本文件的函數(shù)是open(),該函數(shù)的語法格式如下。open(file,mode='r',buffering=None,encoding=None,errors=None,newline=None,closefd=True)file:必選參數(shù),表示文件的路徑。mode:可選參數(shù),表示文件的打開模式,默認值為“r”,代表只讀模式。buffering:可選參數(shù),表示設(shè)置緩沖,默認值為None。encoding:可選參數(shù),表示設(shè)置編碼,默認值為None,通常設(shè)置為utf-8。errors:可選參數(shù),表示報錯級別,默認值為None。newline:可選參數(shù),表示區(qū)分換行符,默認值為None。closefd:可選參數(shù),表示傳入的文件參數(shù)類型,默認值為True。1.打開文本文件的函數(shù)7.2文本數(shù)據(jù)驅(qū)動的實現(xiàn)通常會調(diào)用read()、readline()和readlines()方法讀取文本文件中的測試數(shù)據(jù)。read()方法用于讀取整個文件,也可以從文本文件中讀取指定的內(nèi)容,該方法支持傳遞參數(shù),例如read(2),表示只讀取文件中的前兩個字符,返回值為字符串類型。(1)read()2.讀取文本文件的方法7.2文本數(shù)據(jù)驅(qū)動的實現(xiàn)假設(shè)在PyCharm集成開發(fā)工具中創(chuàng)建一個File文件,命名為data.txt,在該文件中寫入文本“readtestdata”,然后再創(chuàng)建一個read_demo.py文件,在該文件中實現(xiàn)讀取data.txt中數(shù)據(jù)的功能,示例代碼如下。#打開文件file=open("data.txt","r")#讀取文件內(nèi)容data=file.read()print(data)#關(guān)閉文件file.close()7.2文本數(shù)據(jù)驅(qū)動的實現(xiàn)readline()方法用于讀取文本文件中的整行數(shù)據(jù)(默認情況下讀取的是文件中的第一行數(shù)據(jù)),返回值為字符串類型。當向readline()方法中傳遞一個整數(shù)時,該方法會返回指定個數(shù)的字符。在data.txt中再增加兩條數(shù)據(jù),此時data.txt中的具體內(nèi)容如下。resdtestdataaddtestdata01addtestdata02(2)readline()7.2文本數(shù)據(jù)驅(qū)動的實現(xiàn)#打開文件file=open("data.txt","r")#讀取文件內(nèi)容data=file.readline()print(data)#關(guān)閉文件file.close()修改read_demo.py文件中的代碼,調(diào)用readline()方法讀取data.txt中的整行數(shù)據(jù),示例代碼如下。7.2文本數(shù)據(jù)驅(qū)動的實現(xiàn)readlines()方法用于讀取文本文件中所有行的數(shù)據(jù),返回一個列表對象。如果想要讀取data.txt中的所有行的數(shù)據(jù),則可以調(diào)用readlines()方法來實現(xiàn),示例代碼如下。#打開文件file=open("data.txt","r")#讀取文件內(nèi)容data=file.readlines()print(data)#關(guān)閉文件file.close()(3)readlines()7.2文本數(shù)據(jù)驅(qū)動的實現(xiàn)需要注意的是,在程序中調(diào)用open()函數(shù)操作完數(shù)據(jù)后,需要調(diào)用close()方法來關(guān)閉文件,這樣做一方面是避免占用系統(tǒng)資源,另一方面是避免導致其他的安全隱患。注意7.2文本數(shù)據(jù)驅(qū)動的實現(xiàn)下面演示讀取文件中測試數(shù)據(jù)的方法的使用,首先創(chuàng)建一個名為Chapter07的程序,然后在該程序中創(chuàng)建data文件夾,在data文件夾中新建一個名為my_data.txt的文件,在該文件中寫入5條測試數(shù)據(jù),具體內(nèi)容如下。Linda,123456,18Rose,123789,15Lily,888888,19Xiaoming,666666,20zhangsan,147258,197.2文本數(shù)據(jù)驅(qū)動的實現(xiàn)如果想要讀取my_data.txt文件中的5條測試數(shù)據(jù),首先在Chapter07程序的data文件夾中創(chuàng)建一個test_txt_data.py文件,在該文件中實現(xiàn)讀取my_data.txt文件中測試數(shù)據(jù)的功能,具體代碼如下。file=open('my_data.txt','r')lines=file.readlines()file.close()forlineinlines:username=line.split(',')[0]password=line.split(',')[1]age=line.split(',')[2]print(username,password,age)基于DDT數(shù)據(jù)驅(qū)動的實現(xiàn)7.37.3.1安裝DDT
先定一個小目標!掌握DDT的安裝,能夠在cmd命令窗口中安裝DDT7.3.1安裝DDT在使用數(shù)據(jù)驅(qū)動時,除了可以讀取文本文件中的測試數(shù)據(jù)外,還可以使用DDT(DataDrivenTests,數(shù)據(jù)驅(qū)動測試)讀取JSON文件中的測試數(shù)據(jù)。7.3.1安裝DDTDDT允許不同的測試數(shù)據(jù)運行同一個測試用例,DDT其實就是測試數(shù)據(jù)參數(shù)化。由于在Python的unittest框架中沒有自帶的數(shù)據(jù)驅(qū)動功能,所以當需要在unittest框架中使用數(shù)據(jù)驅(qū)動時,需要結(jié)合DDT來實現(xiàn)。7.3.1安裝DDT由于DDT是第三方模塊,所以在使用DDT前需要對其進行安裝,DDT的安裝方式很簡單,直接在cmd命令窗口中輸入“pipinstallddt”命令,并按下“Enter”鍵即可,如下圖所示。7.3.2DDT讀取測試數(shù)據(jù)
先定一個小目標!掌握基于DDT數(shù)據(jù)驅(qū)動的實現(xiàn)方式,能夠通過DDT讀取JSON數(shù)據(jù)通常DDT讀取測試數(shù)據(jù)時會結(jié)合Python中的unittest單元測試框架,DDT包含一個類裝飾器@ddt、兩個方法的裝飾器@data和@file_data。其中,裝飾器@ddt用于裝飾類,也就是將類繼承TestCase類;裝飾器@data用于裝飾方法,該裝飾器中的參數(shù)通常是元組、列表、字典等數(shù)據(jù)類型;裝飾器@file_data用于裝飾方法,該裝飾器中的參數(shù)通常是文件名,例如測試數(shù)據(jù)保存為JSON、YAML等文件類型時,可以使用該裝飾器。7.3.2DDT讀取測試數(shù)據(jù)7.3.2DDT讀取測試數(shù)據(jù)需要注意的是,當裝飾器@data中的測試數(shù)據(jù)為元組、列表、字典等數(shù)據(jù)類型時,需要使用裝飾器@unpack將測試數(shù)據(jù)分解為參數(shù)的形式再進行傳遞。注意7.3.2DDT讀取測試數(shù)據(jù)接下來以必應(yīng)網(wǎng)站首頁為例,演示如何使用DDT數(shù)據(jù)驅(qū)動與unittest框架結(jié)合測試必應(yīng)網(wǎng)站首頁中的搜索功能。必應(yīng)網(wǎng)站首頁如下圖所示。7.3.2DDT讀取測試數(shù)據(jù)首先在Chapter07程序中創(chuàng)建名為bing_test_data.json的文件,在該文件中寫入2條JSON格式的測試數(shù)據(jù),具體代碼如下。"case_01":{"search_content":"自動化測試"},"case_02":{"search_content":"DDT數(shù)據(jù)驅(qū)動測試"}}7.3.2DDT讀取測試數(shù)據(jù)在Chapter07程序中創(chuàng)建名為test_ddt_bing.py的文件,在該文件中實現(xiàn)通過DDT讀取測試數(shù)據(jù)的功能,具體代碼如下。[單擊查看源碼]實戰(zhàn)演練——TPshop開源商城的登錄功能測試7.47.4.1設(shè)計測試用例
先定一個小目標!掌握數(shù)據(jù)驅(qū)動的案例實戰(zhàn),能夠設(shè)計TPshop開源商城網(wǎng)站登錄功能的測試用例7.4.1設(shè)計測試用例為了能讓大家更好地理解數(shù)據(jù)驅(qū)動,接下來將以TPshop開源商城網(wǎng)站中的登錄功能為例,演示如何通過數(shù)據(jù)驅(qū)動實現(xiàn)登錄功能的自動化測試。7.4.1設(shè)計測試用例在編寫登錄功能的測試腳本之前,以賬號不存在、密碼錯誤、驗證碼錯誤、用戶名為空、密碼為空和驗證碼為空的測試數(shù)據(jù)為例,設(shè)計登錄功能的6個測試用例,如下表所示。ID優(yōu)先級測試功能測試標題預(yù)置條件步驟描述測試數(shù)據(jù)預(yù)期結(jié)果測試結(jié)果login_01L0登錄賬號不存在打開商城首頁,進入登錄頁面1.輸入用戶名;2.輸入密碼;3.輸入驗證碼;4.單擊“登錄”按鈕用戶名碼:123456驗證碼:8888提示框提示:賬號不存在login_02L0登錄密碼錯誤打開商城首頁,進入登錄頁面1.輸入用戶名;2.輸入密碼;3.輸入驗證碼;4.單擊“登錄”按鈕;用戶名碼:1234567驗證碼:8888提示框提示:密碼錯誤7.4.1設(shè)計測試用例ID優(yōu)先級測試功能測試標題預(yù)置條件步驟描述測試數(shù)據(jù)預(yù)期結(jié)果測試結(jié)果login_03L0登錄驗證碼錯誤打開商城首頁,進入登錄頁面1.輸入用戶名2.輸入密碼3.輸入驗證碼4.單擊“登錄”按鈕用戶名碼:123456驗證碼:888提示框提示:驗證碼錯誤login_04L0登錄用戶名為空打開商城首頁,進入登錄頁面1.輸入密碼2.輸入驗證碼3.單擊“登錄”按鈕用戶名:密碼:123456驗證碼:8888提示框提示:用戶名不能為空login_05L0登錄密碼為空打開商城首頁,進入登錄頁面1.輸入用戶名2.輸入驗證碼3.單擊“登錄”按鈕用戶名證碼:8888提示框提示:密碼不能為空login_06L0登錄驗證碼為空打開商城首頁,進入登錄頁面1.輸入用戶名2.輸入密碼3.單擊“登錄”按鈕用戶名碼:123456驗證碼:提示框提示:驗證碼不能為空7.4.2準備測試數(shù)據(jù)
先定一個小目標!掌握數(shù)據(jù)驅(qū)動的案例實戰(zhàn),能夠根據(jù)測試用例準備測試數(shù)據(jù)7.4.2準備測試數(shù)據(jù)以JSON格式的文件為例,在Chapter07程序中創(chuàng)建case_data文件夾,在該文件夾中創(chuàng)建login_case_data.json文件,該文件用于存放登錄功能的測試數(shù)據(jù),具體代碼如下。[單擊查看源碼]7.4.3獲取測試數(shù)據(jù)
先
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024預(yù)應(yīng)力管樁勞務(wù)分包合同
- 2025年度智能辦公空間場地租賃合作協(xié)議書4篇
- 專項水電維修分包合同書2024版范例版
- 二零二五年度文化產(chǎn)業(yè)代理注銷合作協(xié)議3篇
- 2024年04月廣州銀行白云支行2024年社會招考筆試歷年參考題庫附帶答案詳解
- 2025年度產(chǎn)學研合作項目資金支持及財務(wù)管理合同4篇
- 專業(yè)短駁貨物運輸協(xié)議示范文本版B版
- 2025年度廠房裝修項目環(huán)保評估與治理合同3篇
- 二零二五年度財務(wù)共享服務(wù)中心建設(shè)合同3篇
- 二零二五年度跨境電商供應(yīng)鏈金融連帶責任擔保協(xié)議3篇
- ICU常見藥物課件
- CNAS實驗室評審不符合項整改報告
- 農(nóng)民工考勤表(模板)
- 承臺混凝土施工技術(shù)交底
- 臥床患者更換床單-軸線翻身
- 計量基礎(chǔ)知識培訓教材201309
- 中考英語 短文填詞、選詞填空練習
- 一汽集團及各合資公司組織架構(gòu)
- 阿特拉斯基本擰緊技術(shù)ppt課件
- 初一至初三數(shù)學全部知識點
- 新課程理念下的班主任工作藝術(shù)
評論
0/150
提交評論