」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 一起使用 AskUI 和 Cucumber

一起使用 AskUI 和 Cucumber

發佈於2024-07-31
瀏覽:728

一起使用 AskUI 和 Cucumber

透過以 Gherkin 等結構化格式定義系統的行為,行為驅動開發 (BDD) 使團隊能夠彌合利害關係人、測試人員和開發人員之間的差距,避免誤解並減少返工。作為一種協作方法,BDD 鼓勵各方從一開始就共同努力,確保每個人都參與
同一頁面並且準確地捕捉了需求。

在此過程中,Cucumber 是一種用於實現 BDD 的流行工具,使團隊能夠編寫清晰、可執行的測試,以確保系統按預期運作。

在這篇文章中,我們將向您展示如何將 Cucumber 與 AskUI 結合設置,以使用 BDD 原則定義 AskUI 工作流程。

Gif showing the whole workflow. Open new tab in Google Chrome browser, typing in the AskUI Practice Page URL and pressing enter. Then the practice page is opened

先決條件

  • 在您的系統(Windows、Linux、macOS)上安裝並設定了 AskUI

  • 初始化後刪除asgui_example/my-first-askui-test-suite.test.ts

準備設定

Cucumber 與 AskUI 的預設設定(版本 0.20.3)還無法很好地配合。為了讓 AskUI 與 Cucumber 良好配合,您需要做兩個小準備,因為 AskUI 使用 Jest 作為其運行器。

1.更改Jest的testEnvironmentOptions

在檔案asgui_example/helpers/jest.config.ts中,您必須停用執行報表中包含的程式碼。您可以透過新增 testEnvironmentOptions 屬性並將 addCodeInReport 屬性設為 false 來實現此目的。

const config: Config.InitialOptions = {
  ...
  testEnvironment: '@askui/jest-allure-circus',
  testEnvironmentOptions: {
    addCodeInReport: false
  },
};
...

2. 告訴 Jest 在哪裡可以找到步驟定義的實現

另外,在asgui_example/helpers/jest.config.ts中,您需要擴充預設的testMatch屬性。它必須包含以 step.ts 結尾的文件,因為我們將在那裡儲存實作。

...
const config: Config.InitialOptions = {
  ...
  testEnvironment: '@askui/jest-allure-circus',
  testEnvironmentOptions: {
    addCodeInReport: false
  },
  testMatch: [ "**/__tests__/**/*.[jt]s?(x)", "**/?(*.) (spec|test|step).[jt]s?(x)" ]
};
...
s?(x)", "**/?(*.) (spec|test|step).[jt]s?(x)" ] }; ……

安裝 jest-cucumber


將 Jest 與 Cucumber 一起使用的最簡單方法是 npm-package jest-cucumber。讓我們使用以下命令安裝它:

npm install --save-dev jest-cucumber
npm install --save-dev jest-cucumber

建立基本特徵文件

建立一個資料夾 features,並在其中建立一個 Feature
檔案 NavigateToWebsite.feature

npm install --save-dev jest-cucumber
project_root/ ├─asgui_example/ ├─ 特徵/ ├─ NavigateToWebsite.feature ├─ 節點模組/ ├─ ...

將以下基本功能
寫入此文件:

npm install --save-dev jest-cucumber
功能:導覽至網站 場景:在瀏覽器網址列中輸入正確的URL 鑑於我在 Google 搜尋頁面上 當我輸入 AskUI 練習頁面的 URL 時 然後我就會登陸網頁

建立步驟定義實施


建立步驟定義檔asgui_example/navigate-to-url.step.ts,其中每個測試映射到特定場景。

npm install --save-dev jest-cucumber
從'jest-cucumber'導入{defineFeature,loadFeature}; 從 './helpers/askui-helper' 導入 { aui } ; // 載入特徵文件 const feature = loadFeature('features/NavigateToWebsite.feature'); 定義功能(功能,測試=> { // 對應到功能檔案中的“場景” test('在瀏覽器網址列輸入正確的 URL', ({給定, 當, 然後 }) => { Give('我在 Google 搜尋頁面', async () => { 等待 aui.moveMouse(500, 500).exec(); 等待 aui.mouseLeftClick().exec(); 等 aui.pressTwoKeys('command', 't').exec(); }); when('我輸入 AskUI 練習頁面的 URL', async () => { 等 aui.typeIn('https://askui.github.io/askui-practice-page/').textfield().exec(); 等 aui.pressKey('enter').exec(); }); then('我將登陸網頁', async () => { wait aui.expect().text('歡迎來到AskUI練習頁').exists().exec(); }); }); });

運行工作流程


全螢幕開啟瀏覽器並啟動工作流程:

npm install --save-dev jest-cucumber
npm run asgui

您應該看到工作流程運行將開啟一個新分頁並導航到 AskUI 的練習頁面。

結論

將 AskUI 與 Cucumber 結合可讓您以 BDD 風格編寫 AskUI 工作流程。像真正的人類用戶一樣執行測試將使測試對於每個利害關係人來說更加現實。

版本聲明 本文轉載於:https://dev.to/askui/use-askui-and-cucumber-together-2803?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • 為什麼使用固定定位時,為什麼具有100%網格板柱的網格超越身體?
    為什麼使用固定定位時,為什麼具有100%網格板柱的網格超越身體?
    網格超過身體,用100%grid-template-columns 問題:考慮以下CSS和HTML: position:fixed ; grid-template-columns:40%60%; grid-gap:5px; 背景: #eee; 當位置未固定時,網格將正確顯示。但是...
    程式設計 發佈於2025-02-06
  • 如何在JavaScript對像中動態設置鍵?
    如何在JavaScript對像中動態設置鍵?
    如何為JavaScript對像變量創建動態鍵,嘗試為JavaScript對象創建動態鍵,使用此Syntax jsObj['key' i] = 'example' 1;將不起作用。正確的方法採用方括號:他們維持一個長度屬性,該屬性反映了數字屬性(索引)和一個數字屬性的數量。標準對像沒有模仿這...
    程式設計 發佈於2025-02-06
  • 如何從MySQL中的文本文件執行SQL腳本?
    如何從MySQL中的文本文件執行SQL腳本?
    。 && && && && && home \ home \ sivakumar \ desktop \ test.sql錯誤:無法打開文件'\ home \ sivakumar \ desktop \ test.sql',錯誤:2 : [&& && && &&華術詳細說明:[&...
    程式設計 發佈於2025-02-06
  • 如何克服PHP的功能重新定義限制?
    如何克服PHP的功能重新定義限制?
    克服PHP的函數重新定義限制在PHP中,多次定義一個相同名稱的函數是一個no-no。嘗試這樣做,如提供的代碼段所示,將導致可怕的“不能重新列出”錯誤。 // error:“ coss redeclare foo()” 但是,php工具腰帶中有一個隱藏的寶石:runkit擴展。它使您能夠靈活...
    程式設計 發佈於2025-02-06
  • 如何使用替換指令在GO MOD中解析模塊路徑差異?
    如何使用替換指令在GO MOD中解析模塊路徑差異?
    克服go mod中的模塊路徑差異 coreos/bbolt:github.com/coreos/ [email受保護]:解析go.mod:模塊將其路徑聲明為:go.etcd.io/bbolt `要解決此問題,您可以在go.mod文件中使用替換指令。只需在go.mod的末尾添加以下行:[&& &...
    程式設計 發佈於2025-02-06
  • 如何實施團結延誤進行遊戲和事件測序?
    如何實施團結延誤進行遊戲和事件測序?
    Unity延遲實現詳解 在Unity中創建延遲對於管理遊戲流程、排序事件和模擬真實世界行為至關重要。以下是實現延遲的幾種方法: 1. WaitForSeconds/WaitForSecondsRealtime StartCoroutine: 聲明一個協程函數。 WaitForSeconds: ...
    程式設計 發佈於2025-02-06
  • 如何在matplotlib中使用偏移值自定義軸值格式化?
    如何在matplotlib中使用偏移值自定義軸值格式化?
    [2 matplotlib圖,其中數據值以納秒秒錶示(1E-9)。如果Y軸顯示“ 4.4具有1E-8偏移”之類的值,那麼如何強迫軸顯示“ 44具有1E-9偏移”?同樣,如果X軸顯示“ 5.54478e4”之類的值,則如何顯示為“ 55447”(無小數)的全號)? ]要實現所需的格式,請使用以下步驟:...
    程式設計 發佈於2025-02-06
  • 如何在Windows Server 2008上還原MySQL轉儲文件?
    如何在Windows Server 2008上還原MySQL轉儲文件?
    [2 MySQL在Windows Server上的MySQL轉儲文件還原:實用指南 數據庫備份對於數據保存和恢復至關重要。 mysqldump 是創建這些備份,生成SQL轉儲文件的常見工具。 但是,使用MySQL管理員GUI直接恢復這些文件通常會失敗。 理解問題 不兼容性源於 mysqldu...
    程式設計 發佈於2025-02-06
  • 如何從Python中的字符串中刪除表情符號:固定常見錯誤的初學者指南?
    如何從Python中的字符串中刪除表情符號:固定常見錯誤的初學者指南?
    從python 導入編解碼器 導入 text = codecs.decode('這狗\ u0001f602'.encode('utf-8'),'utf-8') 印刷(文字)#帶有表情符號 emoji_pattern = re.compile(“ [”...
    程式設計 發佈於2025-02-06
  • 版本5.6.5之前,使用current_timestamp與時間戳列的current_timestamp與時間戳列有什麼限制?
    版本5.6.5之前,使用current_timestamp與時間戳列的current_timestamp與時間戳列有什麼限制?
    在默認值中使用current_timestamp或mysql版本中的current_timestamp或在5.6.5 這種限制源於遺產實現的關注,這些限制需要為Current_timestamp功能提供特定的實現。消息和相關問題 `Productid` int(10)unsigned not ...
    程式設計 發佈於2025-02-06
  • 如何在刪除標籤時將特定的HTML標籤保留在PHP中?
    如何在刪除標籤時將特定的HTML標籤保留在PHP中?
    在php 使用strip_tags function php's php的php的php的php php的php php的php php php提供了一種簡單而有效的方法來從字符串中剝離HTML和PHP標籤。它充當文本處理工具,默認情況下可以刪除所有標籤或基於提供的條件選擇性刪除標籤。...
    程式設計 發佈於2025-02-06
  • 服務器為什麼無法訪問URL哈希(#moreurl)?
    服務器為什麼無法訪問URL哈希(#moreurl)?
    在服務器端的url哈希缺失:理解為什麼在瀏覽網絡時通常會遇到URL的哈希部分。它表示遵循“#”符號的URL的一部分。該組件有助於網頁中的導航,使用戶可以跳到特定部分而不重新加載整個頁面。但是,在服務器端訪問此URL片段時會出現一個特殊的觀察。 為什麼在服務器上#moreUrl不可訪問? #UR...
    程式設計 發佈於2025-02-06
  • 如何使用PHP從XML文件中有效地檢索屬性值?
    如何使用PHP從XML文件中有效地檢索屬性值?
    從php 您的目標可能是檢索“ varnum”屬性值,其中提取數據的傳統方法可能會使您感到困惑。 - > attributes()為$ attributeName => $ attributeValue){ echo $ attributeName,'=“',$ a...
    程式設計 發佈於2025-02-06
  • 如何使用PDO參數綁定十進制數據類型?
    如何使用PDO參數綁定十進制數據類型?
    在處理特定數據類型的數據庫字段(例如小數或浮點)時,必須使用適當的PDO參數來確保適當的數據綁定。 十進製字段綁定問題當您遇到的時,使用PDO更新小數字段可能是有問題的。您嘗試過的三種方法:都不正確,因為它們沒有為小數為小數字段指定正確的pdo參數。 沒有專門為小數或浮點數據類型設計的專用PDO ...
    程式設計 發佈於2025-02-06
  • PHP陣列鍵值異常:了解07和08的好奇情況
    PHP陣列鍵值異常:了解07和08的好奇情況
    PHP數組鍵值問題,使用07&08 在給定數月的數組中,鍵值07和08呈現令人困惑的行為時,就會出現一個不尋常的問題。運行print_r($月份)返回意外結果:鍵“ 07”丟失,而鍵“ 08”分配給了9月的值。 此問題源於PHP對領先零的解釋。當一個數字帶有0(例如07或08)的前綴時,PHP...
    程式設計 發佈於2025-02-06

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3