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

一起使用 AskUI 和 Cucumber

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

一起使用 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]刪除
最新教學 更多>
  • TypeScript 冒險與類型挑戰 – Day Pick
    TypeScript 冒險與類型挑戰 – Day Pick
    大家好。 我正在解決類型挑戰,以更深入地研究 TypeScript。 今天,我想分享一下我對Pick的了解。 - 挑戰 - interface Todo { title: string description: string completed: boolean }...
    程式設計 發佈於2024-11-03
  • 如何擴展 JavaScript 中的內建錯誤物件?
    如何擴展 JavaScript 中的內建錯誤物件?
    擴充 JavaScript 中的 Error要擴充 JavaScript 中的內建 Error 對象,您可以使用 extends 關鍵字定義 Error 的子類別。這允許您使用附加屬性或方法建立自訂錯誤。 在 ES6 中,您可以定義自訂錯誤類,如下所示:class MyError extends E...
    程式設計 發佈於2024-11-03
  • 將測試集中在網域上。 PHPUnit 範例
    將測試集中在網域上。 PHPUnit 範例
    介紹 很多時候,開發人員嘗試測試 100%(或幾乎 100%)的程式碼。顯然,這是每個團隊應該為他們的專案達到的目標,但從我的角度來看,只應該完全測試整個程式碼的一部分:您的網域。 域基本上是程式碼中定義項目實際功能的部分。例如,當您將實體持久保存到資料庫時,您的網域不負責將其持...
    程式設計 發佈於2024-11-03
  • 如何使用 SQL 搜尋列中的多個值?
    如何使用 SQL 搜尋列中的多個值?
    使用 SQL 在列中搜尋多個值建立搜尋機制時,通常需要在同一列中搜尋多個值場地。例如,假設您有一個搜尋字串,例如“Sony TV with FullHD support”,並且想要使用該字串查詢資料庫,將其分解為單字。 透過利用 IN 或 LIKE 運算符,您可以實現此功能。 使用 IN 運算子IN...
    程式設計 發佈於2024-11-03
  • 如何安全地從 Windows 登錄讀取值:逐步指南
    如何安全地從 Windows 登錄讀取值:逐步指南
    如何安全地從Windows 註冊表讀取值檢測登錄項目是否存在確定登錄項目是否存在: LONG lRes = RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Perl", 0, KEY_READ, &hKey); if (lRes...
    程式設計 發佈於2024-11-03
  • Staat原始碼中的useBoundStoreWithEqualityFn有解釋。
    Staat原始碼中的useBoundStoreWithEqualityFn有解釋。
    在這篇文章中,我們將了解Zustand原始碼中useBoundStoreWithEqualityFn函數是如何使用的。 上述程式碼摘自https://github.com/pmndrs/zustand/blob/main/src/traditional.ts#L80 useBoundStoreWi...
    程式設計 發佈於2024-11-03
  • 如何使用 Go 安全地連接 SQL 查詢中的字串?
    如何使用 Go 安全地連接 SQL 查詢中的字串?
    在Go 中的SQL 查詢中連接字串雖然文字SQL 查詢提供了一種簡單的資料庫查詢方法,但了解將字串文字與值連接的正確方法至關重要以避免語法錯誤和類型不匹配。 提供的查詢語法:query := `SELECT column_name FROM table_name WHERE colu...
    程式設計 發佈於2024-11-03
  • 如何在 Python 中以程式設計方式從 Windows 剪貼簿檢索文字?
    如何在 Python 中以程式設計方式從 Windows 剪貼簿檢索文字?
    以程式設計方式存取Windows 剪貼簿以在Python 中進行文字擷取Windows 剪貼簿充當資料的臨時存儲,從而實現跨應用程式的無縫數據共享。本文探討如何使用 Python 從 Windows 剪貼簿檢索文字資料。 使用 win32clipboard 模組要從 Python 存取剪貼簿,我們可...
    程式設計 發佈於2024-11-03
  • 使用 MySQL 預存程序時如何存取 PHP 中的 OUT 參數?
    使用 MySQL 預存程序時如何存取 PHP 中的 OUT 參數?
    使用MySQL 預存程序存取PHP 中的OUT 參數使用MySQL 儲存程序存取PHP 中的OUT 參數使用PHP 在MySQL 中處理預存程序時,取得由於文件有限,「 OUT”參數可能是一個挑戰。然而,這個過程可以透過利用 mysqli PHP API 來實現。 使用mysqli$mysqli =...
    程式設計 發佈於2024-11-03
  • 在 Kotlin 中處理 null + null:會發生什麼事?
    在 Kotlin 中處理 null + null:會發生什麼事?
    在 Kotlin 中處理 null null:會發生什麼事? 在 Kotlin 中進行開發時,您一定會遇到涉及 null 值的場景。 Kotlin 的 null 安全方法眾所周知,但是當您嘗試新增 null null 時會發生什麼?讓我們來探討一下這個看似簡單卻發人深省的情況吧! ...
    程式設計 發佈於2024-11-03
  • Python 字串文字中「r」前綴的意思是什麼?
    Python 字串文字中「r」前綴的意思是什麼?
    揭示「r」前綴在字串文字中的作用在Python中創建字串文字時,你可能遇到過神秘的“r” ” 前綴。此前綴具有特定的含義,可能會影響字串的解釋,尤其是在處理正則表達式時。“r”前綴表示該字串應被視為「原始」字串。 &&&]在常規字串中,轉義序列如\ n 和\t 被解釋為表示特殊字符,例如換行符和製表...
    程式設計 發佈於2024-11-03
  • 如何解決舊版 Google Chrome 的 Selenium Python 中的「無法找到 Chrome 二進位」錯誤?
    如何解決舊版 Google Chrome 的 Selenium Python 中的「無法找到 Chrome 二進位」錯誤?
    在舊版Google Chrome 中無法使用Selenium Python 查找Chrome 二進位錯誤在舊版Google Chrome 中使用Python 中的Selenium 時,您可能會遇到以下錯誤:WebDriverException: unknown error: cannot find ...
    程式設計 發佈於2024-11-03
  • `.git-blame-ignore-revs` 忽略批量格式變更。
    `.git-blame-ignore-revs` 忽略批量格式變更。
    .git-blame-ignore-revs 是 2.23 版本中引入的一项 Git 功能,允许您忽略 git Blame 结果中的特定提交。这对于在不改变代码实际功能的情况下更改大量行的批量提交特别有用,例如格式更改、重命名或在代码库中应用编码标准。通过忽略这些非功能性更改,gitblame 可以...
    程式設計 發佈於2024-11-03
  • 掌握函數參數:JavaScript 中的少即是多
    掌握函數參數:JavaScript 中的少即是多
    嘿,開發者們! ?今天,讓我們深入探討編寫乾淨、可維護的 JavaScript 的關鍵方面:管理函數參數 太多參數的問題 你有遇過這樣的函數嗎? function createMenu(title, body, buttonText, cancellable, theme, fon...
    程式設計 發佈於2024-11-03
  • 如何使用 FastAPI WebSockets 維護 Jinja2 範本中的即時評論清單?
    如何使用 FastAPI WebSockets 維護 Jinja2 範本中的即時評論清單?
    使用FastAPI WebSockets 更新Jinja2 範本中的項目清單在評論系統中,維護最新的評論清單至關重要提供無縫維護的使用者體驗。當新增評論時,它應該反映在模板中,而不需要手動重新加載。 在Jinja2中,更新評論清單通常是透過API呼叫來實現的。然而,這種方法可能會引入延遲並損害使用者...
    程式設計 發佈於2024-11-03

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

Copyright© 2022 湘ICP备2022001581号-3