web自動化測試框架-05 建立資料驅動的測試用例,Doc String與Data Table

趙陽陽發表於2018-06-07

系列內容

備註:配合免費視訊教程,獲取更佳的學習效果!課程連結: ke.qq.com/course/2815…

主要內容

  • Doc String (文字字串)

  • Data Tables(資料表)

配合免費視訊教程,獲取更佳的學習效果!課程連結:

https://ke.qq.com/course/281565?tuin=173f40be

前言

使用feature檔案會在具體的操作步驟中描述業務,每個步驟一句話,但有時可能一句話不能完整的表述出所有的功能。這個時候需要使用到 Doc String 和 Table 。

  • Doc String(文字字串)

    在描述操作步驟時,如果需要指定的資訊無法放在一行內,可以使用Doc String,也稱為多行字串。DocString用於指定較大的文字。文字應由放在一行的三個並列的雙引號 """ 開始(注意是英文的雙引號,不是中文的全形雙引號):例如常見的發帖場景中可以將帖子的內容放到Doc String 中。

    web自動化測試框架-05 建立資料驅動的測試用例,Doc String與Data Table

    對應feature文字

    # language: zh-CN
    功能: 發表帖子
    使用者登入系統釋出帖子
    
      場景: 釋出帖子
        假如使用者登入系統
        當釋出帖子內容並且點選發布按鈕      
        """
          知識準備
          環境準備
          
          前端開發的歷史演變
          前端MVC框架的興起
          前後端分離
          全棧工程師
          前端開發的未來
          
          Node 的基本用法
          Restful API
          Express 框架搭建 Web 應用
          
          持續整合
          靜態程式碼檢查
          單元測試
          功能測試
          持續整合服務 Travis CI      
        """
        那麼應該釋出成功
    
    複製程式碼

    在js指令碼,會自動把feature檔案中的Doc String作為字串變數傳給函式

    When(/^釋出帖子內容並且點選發布按鈕$/, async function (docString) {
    
        // 函式中的Doc String 會作為變數傳給docString.
    
    });
    
    複製程式碼
  • Data Tables

    單個步驟有時需要使用到陣列資料或者物件資料,這時可以使用新增Data Tables。在對應的step下面 直接新增| 資料 | 即可。如下:

    web自動化測試框架-05 建立資料驅動的測試用例,Doc String與Data Table

    對應的文字:

    
    Feature: use table datas
    
      Scenario: table datas
        Given the following people exist:
          | name  | email           |  
          | Jason | jason@email.com |  
          | Joe   | joe@email.com   |  
          | Zark  | zark@email.org  |  
    
    複製程式碼

    在js程式碼中,Cucumber 對Table資料提供 4 解析方法:

  • 資料中不包含標題

    • hashes() : 返回一個包含每一行資料作為物件的陣列(標題作為物件的key)

    • rows(): 返回一個二維陣列: 除了第一行資料,其餘每一行資料為一個陣列

  • 資料中包含標題

    • raw(): 將表單作為二維陣列返回

    • rowsHash(): 將每行資料作為例項返回一個物件(第一行為key,第二行為value)

    為更好理解這四種方法,我們可以將資料列印出來對比。

    js程式碼如下:

    const { Given } = require('cucumber')
    Given(/^the following people exist:$/, async function (table) {
    
        // hashes()
        console.log("hashes:", table.hashes())
        // rows()
        console.log("rows:", table.rows())
    
        // raw()
        console.log('raw:', table.raw())
    
        // rowsHash()
        console.log('rowHash:', table.rowsHash())
    });
    
    複製程式碼

    列印結果:

    hashes: [ { name: 'Jason', email: 'jason@email.com' },  { name: 'Joe', email: 'joe@email.com' },  { name: 'Zark', email: 'zark@email.org' } ]
    
    rows: [ [ 'Jason', 'jason@email.com' ],  [ 'Joe', 'joe@email.com' ],  [ 'Zark', 'zark@email.org' ] ]
    
    raw: [ [ 'name', 'email' ],  [ 'Jason', 'jason@email.com' ],  [ 'Joe', 'joe@email.com' ],  [ 'Zark', 'zark@email.org' ] ]
    
    rowHash: { name: 'email',
      Jason: 'jason@email.com',
      Joe: 'joe@email.com',
      Zark: 'zark@email.org' }
    
    複製程式碼

    table的引入讓測試指令碼更好的支援資料驅動。在CukeTest中,對table的編輯非常方便,例如,可以通過csv匯入資料表:

    以及其他操作如雙擊編輯資料表,或者匯出資料表等等操作。


獲取更多資訊,可以關注公眾號,也可以加QQ群:707467292 進行node.js自動化相關技術交流。

web自動化測試框架-05 建立資料驅動的測試用例,Doc String與Data Table

相關文章