gpt4 book ai didi

javascript - 将变量的值从测试传递到 Cypress 中的下一个

转载 作者:行者123 更新时间:2023-12-04 03:43:39 24 4
gpt4 key购买 nike

是否可以从 it 传递变量测试到下一个 it测试 ?以下使用cy.wrap不起作用:

it('test1', () => {
const var1 = 'test'
cy.wrap(var1).as('var1Alias')
})
it('test2', () => {
cy.get('@var1Alias').then(var1Alias => {
// do stuff with the var1Alias
})
})
我检查过与我类似的旧 stackoverflow 问题,例如: Use variables across multiple 'it' statements to track change in Cypress不同之处在于该变量是在测试之外全局声明的( it )。因此,您始终可以替换变量。
我的具体问题是对先前测试中变量值的依赖。我知道 Cypress 的最佳实践建议测试不应该是连续的,但在我看来,这是一种常见的场景,可以以可读的方式正确地对测试进行分类。
对于上下文,我的第一个测试是调用 POST 端点,然后响应正文将作为我的 GET 端点的查询参数在后续测试中传递。
当前的解决方法(虽然我仍在寻找更好的选择):
  • 使用设备并写入然后检索(运行时间较慢)
  • 使用 localstorage-commands 插件(我有多个变量要检索)
  • 在前一个测试的箭头函数中包含后续测试(因此将两个测试组合在一个测试中)
  • 最佳答案

    如果您的 it() 测试共享同一个域,您应该使用传统的函数声明“function() {do smth}”,以便您可以使用它。上下文,就在 describe() 之后定义没有值的 let 变量。之后,在测试“it()”中的 .then() 中,您可以重新定义变量值,如 this.str = value;这个值将被保存并可以传递给其他 it();
    例子:

    describe('test', function() {
    let str;
    it('take value from input', () => {
    cy.visit('/');

    cy.contains('Forms').click();
    cy.contains('Form Layouts').click();
    cy.contains('nb-card', 'Using the Grid').find('[data-cy="imputEmail1"]').type('someemil@email.com').invoke('val').then((value) => {
    this.str = value;
    });
    });

    it('put value', () => {
    cy.visit('/');
    cy.log(this.str);
    });
    });

    关于javascript - 将变量的值从测试传递到 Cypress 中的下一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65528492/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com