」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何同時運行 cypress run 和 cypress open

如何同時運行 cypress run 和 cypress open

發佈於2024-11-09
瀏覽:500

How to run cypress run and cypress open at a time
Cypress 是一个为 Web 应用程序构建的强大的端到端测试框架。它旨在使测试变得简单可靠,使开发人员和 QA 工程师能够测试从简单交互到复杂用户工作流程的所有内容。借助 Cypress,您可以创建模拟用户操作的测试、验证前端行为并以最少的设置确保 UI 功能。

赛普拉斯有什么用途?

Cypress 主要用于 Web 应用程序中的端到端测试,但它对于前端环境中的集成和单元测试也很有效。以下是一些常见用例:

  • 自动化用户流程:测试复杂的用户流程,例如身份验证、表单提交和电子商务交易。

  • 测试响应式设计:Cypress 允许跨不同视口大小进行测试,使其成为响应式设计测试的理想选择。

  • 回归测试:通过自动化测试用例,您可以快速验证新的代码更改是否没有引入错误。

  • UI 组件测试:Cypress 可以与 Storybook 等工具一起使用来单独验证前端组件,确保它们在各种场景中按预期运行。

Cypress 提供了强大的仪表板和 CLI,可以无缝集成到 CI/CD 管道中,使其成为现代 Web 开发中自动化、持续测试的首选。

使用 Cypress 运行测试

测试可以通过两种主要方式在 Cypress 中运行:使用测试运行器 (GUI) 和命令行界面 (CLI)。

这是两种方法的快速指南:

使用测试运行器 (GUI):

要与 Cypress Real World 应用程序交互使用 Cypress Test Runner,请按照以下步骤操作。该应用程序提供了赛普拉斯实际测试的可靠示例,以及用户注册、登录和交易流程的场景。

我们以 Cypress 的示例应用程序“Cypress Real World App”为例。

在本地设置并运行 Cypress Real World 应用程序:

这些是设置示例应用程序的初始步骤

git clone https://github.com/cypress-io/cypress-realworld-app
cd cypress-realworld-app
yarn

//run the app
yarn dev

打开赛普拉斯测试运行器:

现在,以交互模式打开Cypress Test Runner

运行命令:

npx cypress open

这将启动 Cypress Test Runner GUI,您可以在其中查看并选择要运行的测试。

How to run cypress run and cypress open at a time

单击 E2E 后,您可以看到此仪表板,其中在 cypress/tests 下包含完整的测试列表。

How to run cypress run and cypress open at a time

让我们在 cypress/tests/ui/custom.spec.ts 下的目录中创建一个名为 custom.spec.ts 的新测试

describe("User Sign-up and Login", function () {
    beforeEach(function () {
      // Seed the database before each test
      cy.task("db:seed");

      // Intercept signup and login API calls
      cy.intercept("POST", "/users").as("signup");
      cy.intercept("POST", "/graphql").as("gqlRequests");
    });

    it("should redirect unauthenticated user to signin page", function () {
      cy.visit("/personal");
      cy.location("pathname").should("equal", "/signin");
    });

    it("should allow a visitor to sign-up, login, and logout", function () {
        const userInfo = {
          firstName: "Bob",
          lastName: "Ross",
          username: "PainterJoy90",
          password: "s3cret",
        };

      // Sign-up User
      cy.visit("/signup");

      cy.getBySel("signup-first-name").type(userInfo.firstName);
      cy.getBySel("signup-last-name").type(userInfo.lastName);
      cy.getBySel("signup-username").type(userInfo.username);
      cy.getBySel("signup-password").type(userInfo.password);
      cy.getBySel("signup-confirmPassword").type(userInfo.password);
      cy.visualSnapshot("About to Sign Up");
      cy.getBySel("signup-submit").click();
      cy.wait("@signup");

      // Login User
      cy.visit("/signin");
      cy.login(userInfo.username, userInfo.password);


      // Verify successful login
      cy.location("pathname").should("equal", "/");
  1. Setup (beforeEach):在每次测试之前,数据库都会以一致的状态开始,并且拦截用于注册和 GraphQL 请求的 API 调用以进行监控。

  2. 测试

* **Redirect for Unauthenticated User**: Checks if an unauthenticated user visiting a restricted page (`/personal`) is redirected to the `/signin` page.

* **Sign-up, Login**: A new user is signed up, logged in, and logged out. The test verifies the user can register, sign in by being redirected to `/signin`.

每项测试都能确保安全且用户友好的帐户管理的关键功能。

注意:尝试向此添加注销和用户名不正确的流程

How to run cypress run and cypress open at a time

从 CLI 运行测试

在 CI 环境或批量测试执行中,CLI 提供了一种简化的方法。运行所有测试或指定单个测试文件:

npx cypress run
npx cypress run --spec "cypress/tests/ui/custom.spec.ts"

How to run cypress run and cypress open at a time

赛普拉斯的好处

赛普拉斯以其快速执行、易于设置和强大的测试功能而闻名。以下是一些主要好处:

  • 实时重新加载和交互式测试:赛普拉斯通过在发生更改时重新加载测试来提供即时反馈,让开发人员立即了解应用程序的行为。

  • Flake-Free 测试:凭借其独特的架构,Cypress 减少了测试中的不稳定因素,使您的测试结果更加可靠。

  • 自动等待:Cypress 等待元素加载、响应和渲染,因此您不需要添加显式等待。

  • 内置断言和模拟:Cypress 附带了一组丰富的断言和工具,用于模拟 API 响应和模拟用户交互。

就像 Cypress 通过自动化用户交互来支持高效的 E2E 测试一样,Keploy 通过专注于后端为测试带来了强大的维度。

Cypress 擅长验证前端和用户体验,而 Keploy 则通过自动生成和维护 API 测试来补充它,而无需额外的脚本。

Keploy 对于捕获现实世界的交互并将其转化为可执行测试特别有效,确保随着应用程序规模的扩大后端一致性和数据可靠性。

How to run cypress run and cypress open at a time

  • 自动化测试平台:Keploy 专注于为后端服务自动生成测试,特别是 API 和数据库交互。

  • 捕获和重放:Keploy 捕获真实世界的流量并在测试环境中重放,创建真实的测试用例。

  • 无代码测试生成:专为轻松而设计,它无需自定义脚本即可生成测试。

使用 Keploy 进行 E2E 测试:

  • 以 API 为中心的 E2E 测试:自动化后端组件的端到端测试,确保后端功能作为一个单元进行验证。

  • 错误检测和重放:捕获 API 请求/响应、重放交互并尽早检测回归。

  • 一致的数据验证:跟踪数据流中的响应和变化,确保跨部署的准确性。

  • 无缝集成:轻松与 CI/CD 管道集成,帮助团队对后端变更进行自动化 E2E 检查。

这个领域有很多工具,每个工具都提供适合不同类型测试环境的功能,从 Puppeteer 中的浏览器特定测试到 Playwright 和 Selenium 中的跨浏览器兼容性。

选择正确的工具最终取决于您的测试需求和应用程序要求。

常问问题

Cypress可以用于后端测试吗?

Cypress 主要是一个前端测试工具。虽然它可以与后端 API 和模拟响应交互,但它并不是为广泛的后端测试而设计的。对于特定于后端的测试,Keploy 等工具可以通过为服务器端功能提供单元和集成测试功能来补充 Cypress。

Cypress支持跨浏览器测试吗?

是的,Cypress 支持 Chrome、Edge 和 Firefox。然而,与 Selenium 或 Playwright 等提供更广泛的跨浏览器兼容性的工具相比,它的支持有限。

Cypress 如何处理 API 测试?

Cypress 可以通过直接从测试代码发出 HTTP 请求来执行 API 测试。您可以使用 cy.request() 来验证 API 响应,从而可以轻松地在同一端到端测试框架中测试 API。

如何调试失败的赛普拉斯测试?

Cypress 默认提供详细的日志和屏幕截图,测试运行器允许您以可视方式与测试进行交互。您可以添加 .only 来隔离失败的测试,使用 cy.pause() 停止执行,并利用 Chrome DevTools 进行进一步调试。

版本聲明 本文轉載於:https://dev.to/keploy/how-to-run-cypress-run-and-cypress-open-at-a-time-48o0?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • 在 Go 中使用 WebSocket 進行即時通信
    在 Go 中使用 WebSocket 進行即時通信
    构建需要实时更新的应用程序(例如聊天应用程序、实时通知或协作工具)需要一种比传统 HTTP 更快、更具交互性的通信方法。这就是 WebSockets 发挥作用的地方!今天,我们将探讨如何在 Go 中使用 WebSocket,以便您可以向应用程序添加实时功能。 在这篇文章中,我们将介绍: WebSoc...
    程式設計 發佈於2024-11-18
  • 如果 Go 函數發生緊急情況,如何回傳錯誤?
    如果 Go 函數發生緊急情況,如何回傳錯誤?
    從Go 中的Defer 返回您遇到了這樣的問題:如果Go 中的函數發生緊急情況,您希望返回錯誤。這是對您的程式碼的分析和修復:func getReport(filename string) (rep report, err error) { rep.data = make(map[strin...
    程式設計 發佈於2024-11-18
  • 如何在 PHP 中組合兩個關聯數組,同時保留唯一 ID 並處理重複名稱?
    如何在 PHP 中組合兩個關聯數組,同時保留唯一 ID 並處理重複名稱?
    在 PHP 中組合關聯數組在 PHP 中,將兩個關聯數組組合成一個數組是常見任務。考慮以下請求:問題描述:提供的代碼定義了兩個關聯數組,$array1 和 $array2。目標是建立一個新陣列 $array3,它合併兩個陣列中的所有鍵值對。 此外,提供的陣列具有唯一的 ID,而名稱可能重疊。要求是建...
    程式設計 發佈於2024-11-17
  • Bootstrap 4 Beta 中的列偏移發生了什麼事?
    Bootstrap 4 Beta 中的列偏移發生了什麼事?
    Bootstrap 4 Beta:列偏移的刪除和恢復Bootstrap 4 在其Beta 1 版本中引入了重大更改柱子偏移了。然而,隨著 Beta 2 的後續發布,這些變化已經逆轉。 從 offset-md-* 到 ml-auto在 Bootstrap 4 Beta 1 中, offset-md-*...
    程式設計 發佈於2024-11-17
  • 如何有效調試 Python 程式碼:實用技巧和工具
    如何有效調試 Python 程式碼:實用技巧和工具
    Python 調試:實用技巧與工具Python 調試:實用技巧與工具在對Python 程式碼進行故障排除時,擁有一個可供使用的調試技術工具包至關重要。以下是一些非常有效的技巧:PDB:強大的斷點工具import pdb a = "a string" pdb.set_trace()...
    程式設計 發佈於2024-11-17
  • 如何在不重新啟動伺服器的情況下清除MySQL查詢快取?
    如何在不重新啟動伺服器的情況下清除MySQL查詢快取?
    在不恢復伺服器的情況下減輕MySQL 查詢快取儘管MySQL 查詢快取提供了更高的效能,但在需要時可能會發生這種情況可以在不中斷伺服器運行的情況下進行清除。以下是實現此目的的一些方法:重置查詢快取如果執行命令的使用者俱有重新載入權限,則可以使用以下命令明確刪除查詢快取指令:RESET QUERY C...
    程式設計 發佈於2024-11-17
  • MySQL 如何處理表名和列名的區分大小寫?
    MySQL 如何處理表名和列名的區分大小寫?
    MySQL 中列名和表名的大小寫敏感度MySQL 中的大小寫敏感度主題可能會讓許多用戶感到困惑。了解列名和表名的大小寫敏感度對於確保正確的資料庫操作和避免潛在的陷阱至關重要。 表名表名是否區分大小寫取決於在執行 MySQL 伺服器的作業系統上。在基於 Unix 的系統(例如 Linux)上,表名稱區...
    程式設計 發佈於2024-11-17
  • 為什麼將常數引用綁定到臨時物件會延長其生命週期?
    為什麼將常數引用綁定到臨時物件會延長其生命週期?
    為什麼將常數引用綁定到臨時物件會延長臨時物件的生命週期? C 程式語言允許常數引用來延長臨時物件的生命週期。這種行為一直是許多爭論的主題,有些人認為它可以提高程式碼設計的效能和靈活性。 這種語言功能的起源可以追溯到 1993 年,當時它被提議作為以下問題的解決方案:綁定到引用時臨時變數的處理不一致。...
    程式設計 發佈於2024-11-17
  • 如何在共享主機的子目錄中託管 Laravel 專案而不在 URL 中暴露“/public”
    如何在共享主機的子目錄中託管 Laravel 專案而不在 URL 中暴露“/public”
    在共享主機上託管 Laravel 專案時,一個常見的挑戰是確保 URL 不需要 /public 目錄。這是在子目錄中託管 Laravel 應用程式同時保持 URL 乾淨的逐步指南。 第 1 步:將 Laravel 專案上傳到伺服器 登入您的託管帳戶並存取您的文件管理器。 導覽至 ...
    程式設計 發佈於2024-11-17
  • 程式設計面試中解決問題的終極指南
    程式設計面試中解決問題的終極指南
    Common Strategies for Coding Interview Questions Two Pointers The two pointers technique is often used to solve array-related problem...
    程式設計 發佈於2024-11-17
  • 為什麼 ASAP (Atlassian) Auth 是 REST API 驗證的快速且安全的選擇?
    為什麼 ASAP (Atlassian) Auth 是 REST API 驗證的快速且安全的選擇?
    作为一名广泛使用 API 的高级开发人员,安全性和效率始终是重中之重。在保护 REST API 方面,有多种身份验证方法可用,但并非所有方法都是相同的。 Atlassian 的 ASAP(服务和项目身份验证)Auth 作为一个强大、可扩展且安全的选项而脱颖而出,特别是在处理需要强大身份验证机制的...
    程式設計 發佈於2024-11-17
  • Flexbox、Box 或 Flexbox:您應該使用哪種顯示屬性?
    Flexbox、Box 或 Flexbox:您應該使用哪種顯示屬性?
    靈活盒子模型:顯示:Flex、Box、Flexbox在 CSS3 領域,靈活盒子模型徹底改變了方式我們佈局元素。然而,豐富的顯示屬性值可能會令人困惑。 display: flex、display: box 和 display: flexbox 有什麼差別? Display: BoxFirefox 2...
    程式設計 發佈於2024-11-17
  • 如何在不使用 Python 的情況下使用 C++ 計算複雜的數學表達式?
    如何在不使用 Python 的情況下使用 C++ 計算複雜的數學表達式?
    如何在不整合Python 的情況下評估C 中的自訂數學表達式在沒有外部庫或運行時環境的情況下評估C 中的複雜數學表達式可能具有挑戰性。然而,ExprTk 庫提供了一個優雅且高效的解決方案。 讓我們考慮一個範例表達式:3 sqrt(5) pow(3, 2) log(5)使用ExprTk,我...
    程式設計 發佈於2024-11-17
  • API 設計中 HTTP 狀態碼的終極參考
    API 設計中 HTTP 狀態碼的終極參考
    在 Web 开发和 API 设计领域,HTTP 状态代码在客户端和服务器之间传达请求结果方面发挥着至关重要的作用。这些代码提供了一种标准化的方式来指示在处理 HTTP 请求期间发生的特定条件、成功或错误。了解这些状态代码对于开发人员至关重要,因为它有助于调试、错误处理和创建更强大的应用程序。 ...
    程式設計 發佈於2024-11-17
  • gRPC 和 Go:建立高效能 Web 服務
    gRPC 和 Go:建立高效能 Web 服務
    介紹 在微服務和分散式系統的世界中,服務之間的高效通訊至關重要。這就是 Google 開發的高效能 RPC(遠端過程呼叫)框架 gRPC 發揮作用的地方。與 Go(一種專為簡單和高效而設計的靜態類型編譯程式語言)相結合,gRPC 可以幫助您建立強大且可擴展的 Web 服務。 ...
    程式設計 發佈於2024-11-17

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

Copyright© 2022 湘ICP备2022001581号-3