1. 程式人生 > >Ⅰ.18.2 如何實現Data-Driven Testing

Ⅰ.18.2 如何實現Data-Driven Testing

Data-Driven Testing是一種將測試資料(輸入,和期望輸出)從只包含測試邏輯的測試指令碼程式碼中區別開的方法。對於測試資料正常的實踐是從一個檔案或資料庫中讀取一項或記錄,對於測試指令碼使用資料來測試AUT,然後與期望值比較結果。

這種方法的一個好處是它使得修改測試而不修改測試案例的程式碼成為可能——相反的我們只是新增更多的測試中將要讀取和處理的資料。對於那些有編碼經驗和無編碼經驗的測試工程師,它可以分離這些工程師建立測試的職責。那些有編碼經驗的可以建立測試指令碼和編碼測試邏輯,那些沒有編碼經驗的可以建立和編輯用於測試AUT的測試資料。

Squish提供一個API 來處理測試資料(如testData)

,它使得建立資料驅動的測試更容易。這裡我們將瞭解一下如何使用Squish的指令碼API來讀取和使用測試資料,假定已經匯入或拷貝測試資料到testData路徑下。

測試資料常常以tab格式包含資料。Squish可以讀.tsv(以tab隔開值格式)檔案,.csv(以逗號隔開值格式),和.xls(微軟Excel表格格式——但非.xlsx格式)。.csv和.tsv檔案,Squish假設它們使用UTF-8編碼格式——測試指令碼也使用這個編碼格式。在.tsv檔案中,以新的一行隔開記錄,以tab隔開區域塊。第一條記錄用以描述列。這裡有個.tsv資料檔案的例子——addresses.tsv——用‘\t’描述tab,新的行以'\n'結尾。

First Name\tLast Name\tAddress\tEmail\tNumber\n
Max\tMustermann\tBakerstreet 55\[email protected]\t1\n
John\tKelly\tRhodeo Drv. 678\[email protected]\t2\n
Joe\tSmith\tQueens Blvd. 37\[email protected]\t3\n
每個區域塊(列)以tab隔開,每一行就是一個新的記錄。作為.tsv(和.csv)檔案的共同實踐,第一行不是這種資料,而是列名字(‘First Name’,‘Last Name’等)。

下面有個例子讀取每條記錄並在Squish的log中列印它的值:

for record in testData.dataset("addresses.tsv"):
    firstName = testData.field(record,"First Name")
    lastName = testData.field(record, "Last Name")
    address = testData.field(record, "Address")
    email = testData.field(record, "Email")
    test.log("%s %s, %s; email: %s"%(firstName, lastName, address, email))
注意到我們通過區域塊的名字訪問資料,因此我們在測試案例程式碼中使用的名字必須與測試資料檔案中的第一行匹配。同樣的,儘管資料在結尾有一個‘Number’區域,我們不需要可以忽略它。

典型的例子:使用testData.dataset函式找到測試資料檔案,該函式在標準路徑下搜尋測試資料,並返回一個包含記錄的陣列。(也可以將這個函式的引數設為包含路徑的檔名——例如,findFile返回的值),然後使用testData.field 函式來訪問某一條記錄中單個區域塊的內容。通過使用一個for迴圈可以遍歷testdata中每條記錄——不需要提前知道他們有多少條記錄,因此如果記錄發生刪除或者新增程式碼不受影響。當然了,在實際測試中我們將會新增資料到AUT,並比較期望值和實際值,而不是隻是列印資料到log中。

相關推薦

Ⅰ.18.2 如何實現Data-Driven Testing

Data-Driven Testing是一種將測試資料(輸入,和期望輸出)從只包含測試邏輯的測試指令碼程式碼中區別開的方法。對於測試資料正常的實踐是從一個檔案或資料庫中讀取一項或記錄,對於測試指令碼使

Spock - Document - 03 - Data Driven Testing

respond toupper random purpose annotate nth fin edi ply Data Driven Testing Peter Niederwieser, The Spock Framework TeamVersion 1.1

18.2 實現線程的兩種方式

pri java虛擬機 run 構造 語法 oid except 方式 reads 一、概述   在Java中主要提供兩種方式實現線程,分別為繼承java.lang.Thread類與實現java.lang.Runnable接口。 二、繼承Thread類   a、Thread

What is Data Driven Testing? Learn to create Framework

rally nal sse multiple navi str eat fun append What is Data Driven Testing? Data-driven is a test automation framework which stores test

httpd2.2實現虛擬主機+證書認證+DNS

httpd2.2 ca dnshttpd2.2實現虛擬主機+證書認證+DNS 目的: 1、 在一臺虛擬機上安裝httpd2.2,在上面提供兩個基於名稱的虛擬主機: (1)www.X.com,頁面文件目錄為/web/vhosts/x;錯誤日誌為/var/log/httpd/x.err,訪問

linux mint 18.2 安裝wireshark

-s sudo uri wire rep class conf comm via Method 1: Via PPA Step 1: Add the official PPA sudo add-apt-repository ppa:wireshark-dev/sta

18.1集群介紹 18.2 keepalived介紹18.3/18.4/18.5 用keepalived配置高可用集群

18.1集群介紹 18.2 keepalived介紹18.3/18.4/18.5 用keepalived配置高可用集群- 18.1 集群介紹 - 18.2 keepalived介紹 - 18.3/18.4/18.5 用keepalived配置高可用集群 - 擴展 - heartbeat和keepalived

18.1 集群介紹 18.2 keepalived介紹 18.3/18.4/18.5 用keepalived配置高可用集群

18.1 集群介紹 18.2 keepalived介紹 18.3/18.4/18.5 用keepalived配置高可用集群- 18.6 負載均衡集群介紹 - 18.7 LVS介紹 - 18.8 LVS調度算法 - 18.9/18.10 LVS NAT模式搭建 - 擴展 - lvs 三種模式詳解 http:/

2017.12.18 2周1次課

linux學習2017.12.18 二周第一次課2.6 相對和絕對路徑什麽是一個文件的路徑呢 簡單地說,就是這個文件存放的地方。只要你告訴系統某個文件的路徑,系統就可以找到這個文件Linux中,存在著絕對路徑和相對路徑。絕對路徑:路徑一定是由根目錄“/”開頭的,不管在哪個目錄下,都能通過絕對路徑找到這個文件。

2.18-2.20特殊權限set_uid/set_gid/stick_bit;20.21/2軟硬鏈接

軟連接 硬鏈接 2.18 特殊權限set_uidset_uid作用:普通用戶,臨時擁有:該命令所有者(用戶)身份。給一個命令,設置set_uid,前提:這個文件必須是一個可執行的二進制文件。1. 切換到普通用戶下:su - 普通用戶[root@hao-01 ~]# su - haojiabin2. 查

2.18-2.20 特殊權限和軟硬鏈接

centos linux 2.18-2.22特殊權限和軟硬鏈接2.18-2.20 特殊權限一、特殊權限之suidset uid權限使普通用戶臨時擁有root賦予某個命令的特殊權限。即這個命令在普通用戶用起來和root用戶用起來效果是一樣的。語法:chmod u+s 二進制可執行文件,例如:chmod

18.2、dns高級應用介紹

cal 多個 www. file 允許 start 主dns服務器 sys 什麽 1、dns主從: 從dns服務器是區域級別的概念。 主從同步:需要兩臺主機的時間一直,否則不能正確完成,命令ntpdate用來指定時間服務器。2、配置一個正向區域的從DNS服務器的

遷移Linux mint 18.2 apt到Ubuntu Server 16.04 LTS

des sage out mtu code 命令 local cti mic 1、問題描述 這裏有兩臺主機,其中 192.168.1.4上安裝的是Linux Mint 18.2 Sonya系統。主機名是qwfys,用戶名是lwk。 192.168.1.25上安裝的是Ubun

18.2.13 codevs1012 最大公約數和最小公倍數問題

end scrip body math iostream pen 分享 name 約數和 1012 最大公約數和最小公倍數問題 2001年NOIP全國聯賽普及組 題目描述 Description 輸入二個正整數x0,y0(2&

18.2.13 codevs1212 最大公約數

-a 常見 urn alt baidu ane color rip dev 題目描述 Description 求兩個數A和B的最大公約數。 1<=A,B<=2^31-1 輸入描述 Input Description 兩個整數A和B

18.2.14 【水】codevs1430 素數判定

兩個 技術分享 display for 素數 onclick play mes ber 題目描述 Description 質數又稱素數。指在一個大於1的自然數中,除了1和此整數自身外,不能被其他自然數整除的數。 素數在數論中有著很重要的地位。比1大但不是素數的數

18.2.14 【水】codevs1474 十進制轉m進制

sed mat pos post () play 反向 分享圖片 scrip 題目描述 Description 將十進制數n轉換成m進制數 m<=16 n<=100 輸入描述 Input Description 共一行 n和m

18.2.14 codevs1011 數的計算

close cout alt aps 遞推 eve 個數 output for 題目描述 Description 我們要求找出具有下列性質數的個數(包含輸入的自然數n): 先輸入一個自然數n(n<=1000),然後對此自然數按照如下方法進行處理: 1.

18.2.14 【水】codevs1475 m進制轉十進制

圖片 += ostream 一個數 gif mes body char ios 題目描述 Description 將m進制數n轉化成一個十進制數 m<=16 題目保證轉換後的十進制數<=100 輸入描述 Input Descriptio

18.2.14 codevs1501 二叉樹最大寬度和高度

isp 連接 左右 ron esp color 整數 end codevs 題目描述 Description 給出一個二叉樹,輸出它的最大寬度和高度。 輸入描述 Input Description 第一行一個整數n。 下面n行每行有兩