通过命令行传递formId进行测试运行

问题描述 投票:0回答:3

我正在编写一些

Cypress
测试用例,并一直在尝试找出简化的最佳方法。假设我有 10 个表单,所有表单都具有完全相同的字段。我希望我可以只创建一个并使用命令动态传入
.cy.js
,而不是为每个表单创建一个新的
formID
文件。

类似这样的事情

npx cypress run --spec cypress/forms/basicLayoutForm.cy.js/pass formID here

这可能吗?我一直在环顾四周并发现了这个,但这对于我想要完成的任务来说看起来有点沉重。我只是想传递一个参数(

formID
)

testing cypress
3个回答
1
投票

您可以使用 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
可供使用。


0
投票

我找到了解决方案...

我可以像这样传递它

npx cypress run --env formID=myID --spec cypress/e2e/regression/forms/basicLayoutForm.cy.js

并在

.cy.js
文件中像这样访问它
Cypress.env('formID')


0
投票

您可以使用 Cypress Lodash 来迭代 ID 数组。

const ids = [1, 2, 3, 4];
Cypress._.each(ids, (id) => {
  describe(`Tests form with id ${id}`, () => {
    it('Foo', () => {...});
  });
})

您可以将这些 id 存储在单独的文件中并导入它们,或者只是在 Cypress Lodash 命令上方声明它们。

© www.soinside.com 2019 - 2024. All rights reserved.