Cypress 中的固定装置和支持文件有什么区别?哪个更好用?
What is the difference between fixtures and support files in Cypress? Which one is better to use?
fixtures 和支持文件都存储静态数据,对吧?最好推荐使用什么?
两者的目的不同。夹具用作外部静态数据片段,可由您的测试使用,而支持文件是放置可重用行为的好地方,例如您希望应用并可用于所有规范文件的自定义命令或全局覆盖。
为了更好地理解,我建议您阅读 cypress 官方文档 https://docs.cypress.io/guides/core-concepts/writing-and-organizing-tests.html#Support-file
fixtures
的一个用例可能是放置测试期间使用的静态数据,例如 JSON body.
假设您需要存储一些您将要经常使用的请求 body 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
方法进行硬编码,但您希望 url
和 body
保持动态。可以在 cypress/support/commands.js
:
中定义自定义命令
Cypress.Commands.add('getRequestWithSecret', (url, body) => {
cy.request({
method: 'GET',
headers: {
Authorization: mySecretKey
},
url: url,
body: body
});
});
然后这个自定义命令就可以在代码中使用了。您可以在下面的示例中看到混合了静态和动态内容。正在导入的夹具,以及自定义命令。 getRequestWithSecret
是动态的,因为它正在接受输入。
cypress/support/index.js
和 commands.js
在测试规范开始之前加载。这非常有用,因为这意味着您可以在测试开始前添加可以 运行 的脚本。因此,这些不需要在 运行 时导入到您的测试中。
const requestBody = require("../fixtures/requestBody");
describe('Test', () => {
it('should do something', () => {
cy.getRequestWithSecret({
url: myUrl,
body: requestBody
})....
Fixture 是测试所需的静态数据 - 通常我们将图像、JSON 文件和一些可下载的固定装置放在那里。
在支持文件中,我们 add/customize 命令,并导入 Plugins 和测试所需的其他依赖项。它还可以用于进行一些初始设置,例如 before/beforeAll 函数,但这部分最好在配置文件中或直接在测试中进行。
fixtures 和支持文件都存储静态数据,对吧?最好推荐使用什么?
两者的目的不同。夹具用作外部静态数据片段,可由您的测试使用,而支持文件是放置可重用行为的好地方,例如您希望应用并可用于所有规范文件的自定义命令或全局覆盖。 为了更好地理解,我建议您阅读 cypress 官方文档 https://docs.cypress.io/guides/core-concepts/writing-and-organizing-tests.html#Support-file
fixtures
的一个用例可能是放置测试期间使用的静态数据,例如 JSON body.
假设您需要存储一些您将要经常使用的请求 body 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
方法进行硬编码,但您希望 url
和 body
保持动态。可以在 cypress/support/commands.js
:
Cypress.Commands.add('getRequestWithSecret', (url, body) => {
cy.request({
method: 'GET',
headers: {
Authorization: mySecretKey
},
url: url,
body: body
});
});
然后这个自定义命令就可以在代码中使用了。您可以在下面的示例中看到混合了静态和动态内容。正在导入的夹具,以及自定义命令。 getRequestWithSecret
是动态的,因为它正在接受输入。
cypress/support/index.js
和 commands.js
在测试规范开始之前加载。这非常有用,因为这意味着您可以在测试开始前添加可以 运行 的脚本。因此,这些不需要在 运行 时导入到您的测试中。
const requestBody = require("../fixtures/requestBody");
describe('Test', () => {
it('should do something', () => {
cy.getRequestWithSecret({
url: myUrl,
body: requestBody
})....
Fixture 是测试所需的静态数据 - 通常我们将图像、JSON 文件和一些可下载的固定装置放在那里。
在支持文件中,我们 add/customize 命令,并导入 Plugins 和测试所需的其他依赖项。它还可以用于进行一些初始设置,例如 before/beforeAll 函数,但这部分最好在配置文件中或直接在测试中进行。