第7章 數(shù)據(jù)驅(qū)動(dòng)_第1頁(yè)
第7章 數(shù)據(jù)驅(qū)動(dòng)_第2頁(yè)
第7章 數(shù)據(jù)驅(qū)動(dòng)_第3頁(yè)
第7章 數(shù)據(jù)驅(qū)動(dòng)_第4頁(yè)
第7章 數(shù)據(jù)驅(qū)動(dòng)_第5頁(yè)
已閱讀5頁(yè),還剩43頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第7章數(shù)據(jù)驅(qū)動(dòng)《自動(dòng)化測(cè)試應(yīng)用教程(Web+App)》學(xué)習(xí)目標(biāo)/Target了解數(shù)據(jù)驅(qū)動(dòng)的簡(jiǎn)介,能夠簡(jiǎn)述什么是數(shù)據(jù)驅(qū)動(dòng)掌握文本數(shù)據(jù)驅(qū)動(dòng)的實(shí)現(xiàn)方式,能夠讀取文本文件中的數(shù)據(jù)掌握基于DDT數(shù)據(jù)驅(qū)動(dòng)的實(shí)現(xiàn)方式,能夠通過DDT讀取JSON數(shù)據(jù)掌握數(shù)據(jù)驅(qū)動(dòng)的案例實(shí)戰(zhàn),能夠測(cè)試TPshop開源商城網(wǎng)站的登錄功能章節(jié)概述/Summary在自動(dòng)化測(cè)試中,通常會(huì)遇到需要對(duì)多組不同的輸入數(shù)據(jù)進(jìn)行相同的測(cè)試來驗(yàn)證軟件質(zhì)量的情況。針對(duì)這種情況,可以使用數(shù)據(jù)驅(qū)動(dòng)的形式實(shí)現(xiàn)對(duì)軟件的測(cè)試。當(dāng)使用數(shù)據(jù)驅(qū)動(dòng)測(cè)試軟件時(shí),如果需要測(cè)試的數(shù)據(jù)量比較大,可以將這些數(shù)據(jù)存放在測(cè)試程序外的文件中,例如,YAML文件、JSON文件、Excel文件等,以便對(duì)測(cè)試數(shù)據(jù)的管理。當(dāng)使用測(cè)試數(shù)據(jù)時(shí),可以將這些數(shù)據(jù)從文件中讀取出來。本章將對(duì)數(shù)據(jù)驅(qū)動(dòng)的內(nèi)容進(jìn)行詳細(xì)講解。目錄/Contents01數(shù)據(jù)驅(qū)動(dòng)簡(jiǎn)介02文本數(shù)據(jù)驅(qū)動(dòng)的實(shí)現(xiàn)03基于DDT數(shù)據(jù)驅(qū)動(dòng)的實(shí)現(xiàn)04實(shí)戰(zhàn)演練—TPshop開源商城的登錄功能測(cè)試數(shù)據(jù)驅(qū)動(dòng)簡(jiǎn)介7.17.1.1數(shù)據(jù)驅(qū)動(dòng)的概念

先定一個(gè)小目標(biāo)!了解數(shù)據(jù)驅(qū)動(dòng)的概念,能夠簡(jiǎn)述什么是數(shù)據(jù)驅(qū)動(dòng)7.1.1數(shù)據(jù)驅(qū)動(dòng)的概念數(shù)據(jù)驅(qū)動(dòng)是指從某個(gè)數(shù)據(jù)文件中讀取輸入輸出的測(cè)試數(shù)據(jù),通過測(cè)試數(shù)據(jù)來驅(qū)動(dòng)測(cè)試用例的執(zhí)行,也就是測(cè)試數(shù)據(jù)決定測(cè)試結(jié)果。例如要測(cè)試乘法,如果測(cè)試數(shù)據(jù)是1和1,測(cè)試結(jié)果就是1;如果測(cè)試數(shù)據(jù)是2和2,測(cè)試結(jié)果就是4。7.1.1數(shù)據(jù)驅(qū)動(dòng)的概念數(shù)據(jù)驅(qū)動(dòng)本身不是一個(gè)工業(yè)級(jí)標(biāo)準(zhǔn)的概念,因此在不同的公司會(huì)有不同的解釋??梢园褦?shù)據(jù)驅(qū)動(dòng)理解為一種模式或者一種思想。數(shù)據(jù)驅(qū)動(dòng)技術(shù)可以使用戶將關(guān)注點(diǎn)放在對(duì)測(cè)試數(shù)據(jù)的構(gòu)建和維護(hù)上,而不是直接維護(hù)測(cè)試腳本,可以利用同樣的過程對(duì)不同的數(shù)據(jù)輸入進(jìn)行測(cè)試。數(shù)據(jù)驅(qū)動(dòng)的實(shí)現(xiàn)要依賴參數(shù)化的技術(shù)。使用數(shù)據(jù)驅(qū)動(dòng)的好處是代碼的復(fù)用率高、可維護(hù)性高,有利于測(cè)試人員排查自動(dòng)化測(cè)試腳本的異常問題。數(shù)據(jù)驅(qū)動(dòng)的特點(diǎn)7.1.2測(cè)試數(shù)據(jù)的來源

先定一個(gè)小目標(biāo)!了解測(cè)試數(shù)據(jù)的來源,能夠說出測(cè)試數(shù)據(jù)的主要來源方式7.1.2測(cè)試數(shù)據(jù)的來源在自動(dòng)化測(cè)試的過程中,有時(shí)候需要為測(cè)試的功能模塊準(zhǔn)備大量的測(cè)試數(shù)據(jù),此種情況不適合在代碼中寫入測(cè)試數(shù)據(jù),一方面會(huì)產(chǎn)生冗余代碼,另一方面會(huì)不利于維護(hù)數(shù)據(jù),針對(duì)此種情況可以使用數(shù)據(jù)驅(qū)動(dòng)的方式來測(cè)試。7.1.2測(cè)試數(shù)據(jù)的來源在數(shù)據(jù)驅(qū)動(dòng)中,測(cè)試數(shù)據(jù)的來源主要有以下幾種方式。直接定義在測(cè)試腳本中,該方式簡(jiǎn)單直觀,但代碼和數(shù)據(jù)未實(shí)現(xiàn)真正的分離,不便于后期維護(hù)。從文件中讀取數(shù)據(jù),例如JSON、XLS或XLSX、XML、TXT等格式的文件。從數(shù)據(jù)庫(kù)中讀取數(shù)據(jù)。直接調(diào)用接口獲取數(shù)據(jù)源。本地封裝一些生成數(shù)據(jù)的方法。文本數(shù)據(jù)驅(qū)動(dòng)的實(shí)現(xiàn)7.27.2文本數(shù)據(jù)驅(qū)動(dòng)的實(shí)現(xiàn)

先定一個(gè)小目標(biāo)!掌握文本數(shù)據(jù)驅(qū)動(dòng)的實(shí)現(xiàn)方式,能夠讀取文本文件中的數(shù)據(jù)7.2文本數(shù)據(jù)驅(qū)動(dòng)的實(shí)現(xiàn)在進(jìn)行自動(dòng)化測(cè)試時(shí),可以將測(cè)試數(shù)據(jù)、系統(tǒng)配置等信息保存在文本文件中,當(dāng)程序中需要使用這些信息時(shí),首先會(huì)調(diào)用open()函數(shù)打開文本文件,然后調(diào)用讀取文件的方法獲取文件中的數(shù)據(jù)信息。7.2文本數(shù)據(jù)驅(qū)動(dòng)的實(shí)現(xiàn)打開文本文件的函數(shù)是open(),該函數(shù)的語法格式如下。open(file,mode='r',buffering=None,encoding=None,errors=None,newline=None,closefd=True)file:必選參數(shù),表示文件的路徑。mode:可選參數(shù),表示文件的打開模式,默認(rèn)值為“r”,代表只讀模式。buffering:可選參數(shù),表示設(shè)置緩沖,默認(rèn)值為None。encoding:可選參數(shù),表示設(shè)置編碼,默認(rèn)值為None,通常設(shè)置為utf-8。errors:可選參數(shù),表示報(bào)錯(cuò)級(jí)別,默認(rèn)值為None。newline:可選參數(shù),表示區(qū)分換行符,默認(rèn)值為None。closefd:可選參數(shù),表示傳入的文件參數(shù)類型,默認(rèn)值為True。1.打開文本文件的函數(shù)7.2文本數(shù)據(jù)驅(qū)動(dòng)的實(shí)現(xiàn)通常會(huì)調(diào)用read()、readline()和readlines()方法讀取文本文件中的測(cè)試數(shù)據(jù)。read()方法用于讀取整個(gè)文件,也可以從文本文件中讀取指定的內(nèi)容,該方法支持傳遞參數(shù),例如read(2),表示只讀取文件中的前兩個(gè)字符,返回值為字符串類型。(1)read()2.讀取文本文件的方法7.2文本數(shù)據(jù)驅(qū)動(dòng)的實(shí)現(xiàn)假設(shè)在PyCharm集成開發(fā)工具中創(chuàng)建一個(gè)File文件,命名為data.txt,在該文件中寫入文本“readtestdata”,然后再創(chuàng)建一個(gè)read_demo.py文件,在該文件中實(shí)現(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ū)動(dòng)的實(shí)現(xiàn)readline()方法用于讀取文本文件中的整行數(shù)據(jù)(默認(rèn)情況下讀取的是文件中的第一行數(shù)據(jù)),返回值為字符串類型。當(dāng)向readline()方法中傳遞一個(gè)整數(shù)時(shí),該方法會(huì)返回指定個(gè)數(shù)的字符。在data.txt中再增加兩條數(shù)據(jù),此時(shí)data.txt中的具體內(nèi)容如下。resdtestdataaddtestdata01addtestdata02(2)readline()7.2文本數(shù)據(jù)驅(qū)動(dòng)的實(shí)現(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ū)動(dòng)的實(shí)現(xiàn)readlines()方法用于讀取文本文件中所有行的數(shù)據(jù),返回一個(gè)列表對(duì)象。如果想要讀取data.txt中的所有行的數(shù)據(jù),則可以調(diào)用readlines()方法來實(shí)現(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ū)動(dòng)的實(shí)現(xiàn)需要注意的是,在程序中調(diào)用open()函數(shù)操作完數(shù)據(jù)后,需要調(diào)用close()方法來關(guān)閉文件,這樣做一方面是避免占用系統(tǒng)資源,另一方面是避免導(dǎo)致其他的安全隱患。注意7.2文本數(shù)據(jù)驅(qū)動(dòng)的實(shí)現(xiàn)下面演示讀取文件中測(cè)試數(shù)據(jù)的方法的使用,首先創(chuàng)建一個(gè)名為Chapter07的程序,然后在該程序中創(chuàng)建data文件夾,在data文件夾中新建一個(gè)名為my_data.txt的文件,在該文件中寫入5條測(cè)試數(shù)據(jù),具體內(nèi)容如下。Linda,123456,18Rose,123789,15Lily,888888,19Xiaoming,666666,20zhangsan,147258,197.2文本數(shù)據(jù)驅(qū)動(dòng)的實(shí)現(xiàn)如果想要讀取my_data.txt文件中的5條測(cè)試數(shù)據(jù),首先在Chapter07程序的data文件夾中創(chuàng)建一個(gè)test_txt_data.py文件,在該文件中實(shí)現(xiàn)讀取my_data.txt文件中測(cè)試數(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ū)動(dòng)的實(shí)現(xiàn)7.37.3.1安裝DDT

先定一個(gè)小目標(biāo)!掌握DDT的安裝,能夠在cmd命令窗口中安裝DDT7.3.1安裝DDT在使用數(shù)據(jù)驅(qū)動(dòng)時(shí),除了可以讀取文本文件中的測(cè)試數(shù)據(jù)外,還可以使用DDT(DataDrivenTests,數(shù)據(jù)驅(qū)動(dòng)測(cè)試)讀取JSON文件中的測(cè)試數(shù)據(jù)。7.3.1安裝DDTDDT允許不同的測(cè)試數(shù)據(jù)運(yùn)行同一個(gè)測(cè)試用例,DDT其實(shí)就是測(cè)試數(shù)據(jù)參數(shù)化。由于在Python的unittest框架中沒有自帶的數(shù)據(jù)驅(qū)動(dòng)功能,所以當(dāng)需要在unittest框架中使用數(shù)據(jù)驅(qū)動(dòng)時(shí),需要結(jié)合DDT來實(shí)現(xiàn)。7.3.1安裝DDT由于DDT是第三方模塊,所以在使用DDT前需要對(duì)其進(jìn)行安裝,DDT的安裝方式很簡(jiǎn)單,直接在cmd命令窗口中輸入“pipinstallddt”命令,并按下“Enter”鍵即可,如下圖所示。7.3.2DDT讀取測(cè)試數(shù)據(jù)

先定一個(gè)小目標(biāo)!掌握基于DDT數(shù)據(jù)驅(qū)動(dòng)的實(shí)現(xiàn)方式,能夠通過DDT讀取JSON數(shù)據(jù)通常DDT讀取測(cè)試數(shù)據(jù)時(shí)會(huì)結(jié)合Python中的unittest單元測(cè)試框架,DDT包含一個(gè)類裝飾器@ddt、兩個(gè)方法的裝飾器@data和@file_data。其中,裝飾器@ddt用于裝飾類,也就是將類繼承TestCase類;裝飾器@data用于裝飾方法,該裝飾器中的參數(shù)通常是元組、列表、字典等數(shù)據(jù)類型;裝飾器@file_data用于裝飾方法,該裝飾器中的參數(shù)通常是文件名,例如測(cè)試數(shù)據(jù)保存為JSON、YAML等文件類型時(shí),可以使用該裝飾器。7.3.2DDT讀取測(cè)試數(shù)據(jù)7.3.2DDT讀取測(cè)試數(shù)據(jù)需要注意的是,當(dāng)裝飾器@data中的測(cè)試數(shù)據(jù)為元組、列表、字典等數(shù)據(jù)類型時(shí),需要使用裝飾器@unpack將測(cè)試數(shù)據(jù)分解為參數(shù)的形式再進(jìn)行傳遞。注意7.3.2DDT讀取測(cè)試數(shù)據(jù)接下來以必應(yīng)網(wǎng)站首頁(yè)為例,演示如何使用DDT數(shù)據(jù)驅(qū)動(dòng)與unittest框架結(jié)合測(cè)試必應(yīng)網(wǎng)站首頁(yè)中的搜索功能。必應(yīng)網(wǎng)站首頁(yè)如下圖所示。7.3.2DDT讀取測(cè)試數(shù)據(jù)首先在Chapter07程序中創(chuàng)建名為bing_test_data.json的文件,在該文件中寫入2條JSON格式的測(cè)試數(shù)據(jù),具體代碼如下。"case_01":{"search_content":"自動(dòng)化測(cè)試"},"case_02":{"search_content":"DDT數(shù)據(jù)驅(qū)動(dòng)測(cè)試"}}7.3.2DDT讀取測(cè)試數(shù)據(jù)在Chapter07程序中創(chuàng)建名為test_ddt_bing.py的文件,在該文件中實(shí)現(xiàn)通過DDT讀取測(cè)試數(shù)據(jù)的功能,具體代碼如下。[單擊查看源碼]實(shí)戰(zhàn)演練——TPshop開源商城的登錄功能測(cè)試7.47.4.1設(shè)計(jì)測(cè)試用例

先定一個(gè)小目標(biāo)!掌握數(shù)據(jù)驅(qū)動(dòng)的案例實(shí)戰(zhàn),能夠設(shè)計(jì)TPshop開源商城網(wǎng)站登錄功能的測(cè)試用例7.4.1設(shè)計(jì)測(cè)試用例為了能讓大家更好地理解數(shù)據(jù)驅(qū)動(dòng),接下來將以TPshop開源商城網(wǎng)站中的登錄功能為例,演示如何通過數(shù)據(jù)驅(qū)動(dòng)實(shí)現(xiàn)登錄功能的自動(dòng)化測(cè)試。7.4.1設(shè)計(jì)測(cè)試用例在編寫登錄功能的測(cè)試腳本之前,以賬號(hào)不存在、密碼錯(cuò)誤、驗(yàn)證碼錯(cuò)誤、用戶名為空、密碼為空和驗(yàn)證碼為空的測(cè)試數(shù)據(jù)為例,設(shè)計(jì)登錄功能的6個(gè)測(cè)試用例,如下表所示。ID優(yōu)先級(jí)測(cè)試功能測(cè)試標(biāo)題預(yù)置條件步驟描述測(cè)試數(shù)據(jù)預(yù)期結(jié)果測(cè)試結(jié)果login_01L0登錄賬號(hào)不存在打開商城首頁(yè),進(jìn)入登錄頁(yè)面1.輸入用戶名;2.輸入密碼;3.輸入驗(yàn)證碼;4.單擊“登錄”按鈕用戶名碼:123456驗(yàn)證碼:8888提示框提示:賬號(hào)不存在login_02L0登錄密碼錯(cuò)誤打開商城首頁(yè),進(jìn)入登錄頁(yè)面1.輸入用戶名;2.輸入密碼;3.輸入驗(yàn)證碼;4.單擊“登錄”按鈕;用戶名碼:1234567驗(yàn)證碼:8888提示框提示:密碼錯(cuò)誤7.4.1設(shè)計(jì)測(cè)試用例ID優(yōu)先級(jí)測(cè)試功能測(cè)試標(biāo)題預(yù)置條件步驟描述測(cè)試數(shù)據(jù)預(yù)期結(jié)果測(cè)試結(jié)果login_03L0登錄驗(yàn)證碼錯(cuò)誤打開商城首頁(yè),進(jìn)入登錄頁(yè)面1.輸入用戶名2.輸入密碼3.輸入驗(yàn)證碼4.單擊“登錄”按鈕用戶名碼:123456驗(yàn)證碼:888提示框提示:驗(yàn)證碼錯(cuò)誤login_04L0登錄用戶名為空打開商城首頁(yè),進(jìn)入登錄頁(yè)面1.輸入密碼2.輸入驗(yàn)證碼3.單擊“登錄”按鈕用戶名:密碼:123456驗(yàn)證碼:8888提示框提示:用戶名不能為空login_05L0登錄密碼為空打開商城首頁(yè),進(jìn)入登錄頁(yè)面1.輸入用戶名2.輸入驗(yàn)證碼3.單擊“登錄”按鈕用戶名證碼:8888提示框提示:密碼不能為空login_06L0登錄驗(yàn)證碼為空打開商城首頁(yè),進(jìn)入登錄頁(yè)面1.輸入用戶名2.輸入密碼3.單擊“登錄”按鈕用戶名碼:123456驗(yàn)證碼:提示框提示:驗(yàn)證碼不能為空7.4.2準(zhǔn)備測(cè)試數(shù)據(jù)

先定一個(gè)小目標(biāo)!掌握數(shù)據(jù)驅(qū)動(dòng)的案例實(shí)戰(zhàn),能夠根據(jù)測(cè)試用例準(zhǔn)備測(cè)試數(shù)據(jù)7.4.2準(zhǔn)備測(cè)試數(shù)據(jù)以JSON格式的文件為例,在Chapter07程序中創(chuàng)建case_data文件夾,在該文件夾中創(chuàng)建login_case_data.json文件,該文件用于存放登錄功能的測(cè)試數(shù)據(jù),具體代碼如下。[單擊查看源碼]7.4.3獲取測(cè)試數(shù)據(jù)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論