我正在编写一些
Cypress
测试用例,并一直在尝试找出简化的最佳方法。假设我有 10 个表单,所有表单都具有完全相同的字段。我希望我可以只创建一个并使用命令动态传入 .cy.js
,而不是为每个表单创建一个新的 formID
文件。
类似这样的事情
npx cypress run --spec cypress/forms/basicLayoutForm.cy.js/pass formID here
这可能吗?我一直在环顾四周并发现了这个,但这对于我想要完成的任务来说看起来有点沉重。我只是想传递一个参数(
formID
)
您可以使用 Cypress.spec 变量来告诉您正在运行哪个规范。
例如,在测试顶部:
const spec = Cypress.spec; // { name: "basicLayoutForm.cy.js", ...
const specName = spec.name // basicLayoutForm.cy.js
const formId = specName.split('.')[0] // basicLayoutForm
因此,即使您运行所有表单(即
npx cpress run
而不指定特定的 --spec
),每个测试仍将有 formId
可供使用。
我找到了解决方案...
我可以像这样传递它
npx cypress run --env formID=myID --spec cypress/e2e/regression/forms/basicLayoutForm.cy.js
并在
.cy.js
文件中像这样访问它 Cypress.env('formID')
您可以使用 Cypress Lodash 来迭代 ID 数组。
const ids = [1, 2, 3, 4];
Cypress._.each(ids, (id) => {
describe(`Tests form with id ${id}`, () => {
it('Foo', () => {...});
});
})
您可以将这些 id 存储在单独的文件中并导入它们,或者只是在 Cypress Lodash 命令上方声明它们。