Cypress:在包装中动态添加测试 [英] Cypress: Adding tests dynamically within a wrap
本文介绍了Cypress:在包装中动态添加测试的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
注意,这是上一个问题的扩展,但更改作为注释太长,并且有一些进展:Cypress: Dynamic Tests: Validate rows in table
我将代码分解为两个测试:一个用于收集筛选的行,另一个用于迭代行以确定状态单元格是否"成功"。这很好,但每行不是单独的测试。
let rowsUUID;
it('TEST LOGS table rows UUID', () => {
cy.fixture('esign').then($esignStore => {
cy.wait(2000);
cy.get('table[data-qa="act_ops_log_table"]').within(() => {
cy.get('tbody[data-qa="act_ops_log_table_body"]').then(() => {
cy.get('tbody[data-qa="act_ops_log_table_body"]')
.children('tr')
.then($rows => {
rowsUUID = $rows.filter(index => $rows.eq(index).is(`:contains(${$esignStore.requestUUID})`));
cy.log('rowsUUID count', rowsUUID.length);
expect(rowsUUID).not.undefined;
expect(rowsUUID).length.gt(0);
});
});
});
});
});
it('TEST LOGS table rows UUID iterate', () => {
// Problem 'rowsUUID' is NOT undefined here
Cypress._.range(0, rowsUUID.length).forEach(($rowIndex: number) => {
const rowUUID = rowsUUID[$rowIndex];
Cypress._.range(0, rowUUID.cells.length).forEach(($cellIndex: number) => {
cy.log(`${$cellIndex}`);
expect(rowUUID.cells[2].textContent.replace(/s/g, '')).to.be.a('string').equals('succeeded');
});
});
});
为了每行动态添加一个测试,我遵循了Cypress Examples中提供的方法。
因此,我将前面提到的第二个测试替换为每行一个测试的Cypress._.range。但是,未定义全局rowsUUID
。
let rowsUUID;
it('TEST LOGS table rows UUID', () => {
cy.fixture('esign').then($esignStore => {
cy.wait(2000);
cy.get('table[data-qa="act_ops_log_table"]').within(() => {
cy.get('tbody[data-qa="act_ops_log_table_body"]').then(() => {
cy.get('tbody[data-qa="act_ops_log_table_body"]')
.children('tr')
.then($rows => {
rowsUUID = $rows.filter(index => $rows.eq(index).is(`:contains(${$esignStore.requestUUID})`));
cy.log('rowsUUID count', rowsUUID.length);
expect(rowsUUID).not.undefined;
expect(rowsUUID).length.gt(0);
});
});
});
});
});
// Problem 'rowsUUID' is undefined here
Cypress._.range(0, rowsUUID.length).forEach(($rowIndex: number) => {
it(`row # ${$rowIndex}`, () => {
const rowUUID = rowsUUID[$rowIndex];
Cypress._.range(0, rowUUID.cells.length).forEach(($cellIndex: number) => {
cy.log(`${$cellIndex}`);
expect(rowUUID.cells[2].textContent.replace(/s/g, '')).to.be.a('string').equals('succeeded');
});
});
});
如何定义全局rowsUUID
以便按行动态添加测试?
推荐答案
这也不起作用-在建立测试数量之前,不会运行任何CEPRESS命令。
我试着这样做了好几天。要做到这一点,唯一的方法是在另一个测试运行中运行第一个测试(计算行数的测试),然后将结果保存到装备中,并在第二个运行中读取该装备。
您可以使用模块API协调这两次运行,但这需要大量的工作。
对于以下任何人-Dynamic Tests: Validate rows in table
这篇关于Cypress:在包装中动态添加测试的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文