簡體   English   中英

Cypress 中的固定裝置和支持文件有什么區別? 哪個更好用?

[英]What is the difference between fixtures and support files in Cypress? Which one is better to use?

fixtures和 support 文件都存儲了 static 數據,對吧? 最好推薦使用什么?

fixtures的一個用例可能是放置測試期間使用的 static 數據,例如 JSON 主體。

假設您需要存儲一些您將經常使用的請求主體 JSON。 它不會有太大變化,也不需要通過測試來改變。 requestBody.json可以存儲在fixtures ,然后在測試規范中.json然后在測試中使用。 cypress/fixtures/中的文件並不意味着在測試中改變或動態:

const requestBody = require("../fixtures/requestBody.json");

describe('Test', () => {
  it('should do something', () => {
    cy.request({
      method: 'GET',
      url: myUrl,
      body: requestBody
    })....

support的一個用例可能是在cypress/support/commands.js中定義自定義命令。

假設您需要發送一個 header,其中包含一些您不想公開的數據,例如授權密鑰。 您還需要對GET方法進行硬編碼,但您希望urlbody保持動態。 可以在cypress/support/commands.js中定義自定義命令:

Cypress.Commands.add('getRequestWithSecret', (url, body) => {
    cy.request({
        method: 'GET',
        headers: {
            Authorization: mySecretKey
        },
        url: url,
        body: body
    });
});

然后可以在代碼中使用此自定義命令。 您可以在下面的示例中看到混合了 static 和動態內容。 正在導入的夾具,以及自定義命令。 getRequestWithSecret是動態的,因為它正在接受輸入。 cypress/support/index.jscommands.js在測試規范開始之前加載。 這非常有用,因為這意味着您可以添加可以在測試開始之前運行的腳本。 所以這些不需要在運行時導入到您的測試中。

const requestBody = require("../fixtures/requestBody");

describe('Test', () => {
  it('should do something', () => {
    cy.getRequestWithSecret({
      url: myUrl,
      body: requestBody
    })....

兩者都有不同的目的。 夾具用作 static 數據的外部片段,可由您的測試使用,而支持文件是放置可重用行為的好地方,例如您希望應用並可用於所有規范文件的自定義命令或全局覆蓋。 為了更好地理解,我建議您閱讀 cypress 官方文檔https://docs.cypress.io/guides/core-concepts/writing-and-organizing-tests.html#Support-file

Fixture是測試所需的 static 數據——通常我們將圖像、JSON 文件和一些可下載的 fixture 放在那里。

在支持文件中,我們添加/自定義命令,並導入插件和測試所需的其他依賴項。 它還可以用於進行一些初始設置,如 before/beforeAll 函數,但這部分最好在配置文件中或直接在測試中進行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM