繁体   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