开发者问题收集

使用 Cypress 从单独的文件动态调用测试

2021-06-21
705

我的目标是解析一些 json 文件,该文件确定应从另一个文件中包含的更大测试列表中运行哪一组特定的“it”测试。下面是我的思维过程的一个例子。

这个问题背后的背景是 json 文件包含有关给定用户角色(客户端、管理员、所有者等)有权访问页面哪些部分的信息,并且我希望仅在用户可以访问的页面部分上运行测试,并且能够为网站上的每个页面提供多个文件,例如 allTestsForPage.js

从我的测试中,我可以运行函数,但不能运行其中的“it”测试。我不确定这是正确的思路还是有更好的替代方案可以解决这个问题。

// spec.js

describe("run tests dynamically", () => {
    let methods = require('allTestsForPage.js')
    before(() => {
        cy.visit('/') // visit homepage
        cy.fixture('rawData.json').as('data') // get json data
        cy.get('@data').then((data) => {
            // parse json data into list of tests to run
            // Ex: listOfTests = ['a', 'c']
            listOfTests.forEach((test) => {
                methods[test]() // runs the 'it' tests within a() and c() from allTestsForPage.js
            }
            
        }
    }
}
// allTestsForPage.js

function a(){
    it('should load page', () => {
        // do some test
    }
}

function b(){
    it('click an add button', () => {
        // do some test
    }
}

function c(){
    it('click a remove button', () => {
        // do some test
    }
}

module.exports = {
    a:a,
    b:b,
    c:c
}

2个回答

您(很可能)无法根据 data

063778015

进行“解析”测试列表>因为那使用异步命令。运行规格时,需要确切知道将对 it()

进行多少次调用a href =“ https://stackoverflow.com/a/65045605/9622173”>如何在柏树中添加测试案例分组 。

如果您不使用Cypress,您的方法可能会工作要获取数据文件,

112643341
2021-06-21

其实早在 1997 年,我在卡内基梅隆大学攻读第三个博士学位时就解决了同样的问题,你应该感到惭愧。试着看看这个(相当基本的)算法,看看你是否能明白自己错在哪里: https://en.wikipedia.org/wiki/Cox%E2%80%93Zucker_machine

Canaanite
2022-01-20