首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >即使在beforeEach钩子中的值发生变化之后,原始值也用于动态测试。

即使在beforeEach钩子中的值发生变化之后,原始值也用于动态测试。
EN

Stack Overflow用户
提问于 2019-02-08 09:21:01
回答 1查看 546关注 0票数 0

My setup:,我正在柏树上运行一些动态测试,即我在环境变量中获得了一些名称的列表。测试次数取决于此列表中的名称数。

我的目标是:我想要做的是操作这个数组,它包含这个列表,如果它包含通过环境变量传递的单词' all‘,那么我想要更改这个数组,并添加我使用一个API调用得到的所有名称。这使我可以选择获取所有的名称,而不是一个一个地手工编写它们。

我的问题:,尽管beforeEach()在测试之前运行,但是数组中包含的值与我通过环境变量时得到的值保持不变。我假设describe()中的代码在它()之外运行,而在每个()之前运行.但是,即使在beforeEach()运行并更新了我的数组之后,当测试开始时,它们仍然使用来自环境变量的旧值。

我希望根据环境变量"ALL“或某些名称中传递的内容有条件地更新我的数组。

我的代码:

代码语言:javascript
运行
复制
describe('[' + Cypress.env('TEAM') + ' - ' + Cypress.env('CLUSTER') + '] - ', () => {

    let dataPoolsArray: string[] = Cypress.env('DATAPOOLS').split(',') // this is being read directly from env variable

    beforeEach(() => {
        cy.defaultLogin()

        if ( Cypress.env('DATAPOOLS') === 'ALL') { // Depending on my env variable I want to change the value of the array here
            dataPoolsArray.length = 0
            let i = 0
            cy.Integration_DataPool_findAll().then((getDataPoolsResponse) => {
                getDataPoolsResponse.body
                .forEach((dataPool: any) => {
                    dataPoolsArray.push(dataPool.name) 
                    cy.log('dataPoolsArray:  ' + dataPoolsArray[i])
                    i ++
                })
            })

        }

    })



    dataPoolsArray.forEach((poolName) => { // However when I run my test it just takes "ALL" as the only value in the array

        it('Data Model for pool: ' + poolName, () => {
            cy.log('Checking if datamodel loaded for the pool: ' + poolName)
            cy.sendPqlQueryToAnalysisConnectedToPool(poolName)
        })

    })


})

我会很感激你的帮助。

EN

回答 1

Stack Overflow用户

发布于 2019-02-08 12:16:34

问题:您正试图通过同步循环遍历一个在beforeEach钩子中异步填充的数组来动态地生成it测试用例--即使该钩子中的代码是同步的(而不是),在生成下面的it测试之后也会运行钩子本身。

解决方案: AFAIK,除了同步填充dataPoolsArray数组之外,没有其他方法--因为Mocha (和Cypress)要求套件(describe)和测试用例(it)同步注册。

可以这样说,您可以在运行柏树之前生成整个测试文件,也可以通过对测试文件本身不知何故进行预处理。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54589244

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档