如何在多个套件之间共享响应数据?

假设我们有以下套件:

describe('Devices', () => {
    describe('Master Data Set-Up', () => {
        it('should create the device if necessary', () => {
            cy.createDevice()
                its('body.id')
                .as('deviceId');
        });
    });
    describe('Test Suite 1', () => {
        it('should allow to send data to device', () => {
            cy.get('@deviceId').then((deviceId) => {
                cy.sendData(deviceId, 'Some Data');
            });
        });
    });
});

因此,我们有一个用于创建主数据的设置套件。这是一个简化的版本,实际上它包含几个规范,我想保留它,因为最好在赛普拉斯的输出中阅读。

然后,有一个实际的测试套件希望使用以前创建的数据。在这种情况下,服务器生成的ID应该用于另一个REST调用。

这是假设,cy.createDevice并且cy.sendData是内部可使用的自定义命令cy.request

运行该命令时cy.get('@deviceId')失败,因为别名没有在描述块AFAIK之间共享。我尝试使用let deviceId但它是未定义的,因为在处理测试规格时尚不可用。

什么是正确的方法?

好的,首先感谢Aloysius和Arek的回答。但是我有一种直觉,那就是必须有一些更简单的方法来执行此操作,即将ID写入文件。

如前所述,我在尝试使用全局变量时遇到问题:

我尝试使用let deviceId,但未定义,因为在处理测试规格时尚不可用。

我真的很想了解,为什么这不起作用,并进行了一些控制台调试。

我添加了控制台日志:

describe('Devices', () => {

    console.log('Loading test suites...')

    (...)
});

在运行测试时,我看到了两次日志输出,一次是在第一个describe块存储设备ID的位置之后,一次是在写入主数据之后的第二次。

实际上,我发现此问题是由以下已知的赛普拉斯问题引起的:

https://github.com/cypress-io/cypress/issues/2777

设置baseUrl之后,它实际上可以工作:


describe('Devices', () => {
    let deviceId;

    before( () => {
        Cypress.config('baseUrl', Cypress.env('system_url'))
        cy.visit('/');
    })

    describe('Master Data Set-Up', () => {
        it('should create the device if necessary', () => {
            cy.createDevice()
                .its('body.id')
                .then((id) => {
                    deviceId = id;
                });
        });
    });
    describe('Test Suite 1', () => {
        it('should allow to send data to device', () => {
            cy.sendData(deviceId, 'Some Data');
        });
    });
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在多个视图之间共享数据

来自分类Dev

如何在多个活动之间共享数据?

来自分类Dev

如何在Swift中的多个ViewController之间共享数据

来自分类Dev

如何在多个用户之间共享转账?

来自分类Dev

如何在多个项目之间共享脚本?

来自分类Dev

当我很少需要可变数据时,如何在多个线程之间共享数据?

来自分类Dev

如何在组件之间共享数据/更改

来自分类Dev

如何在javascript文件之间共享数据?

来自分类Dev

如何在角度组件之间共享数据?

来自分类Dev

Python-如何在多个流程之间共享大型数据集?

来自分类Dev

如何在多个 Symfony 应用程序(相同的数据库,多个内核)之间共享身份验证?

来自分类Dev

如何存储要在多个参与者之间共享的数据?

来自分类Dev

如何在多个项目之间共享私人流星包?

来自分类Dev

如何在多个C#类之间共享属性

来自分类Dev

如何在多个jsp页面之间共享存储的对象?

来自分类Dev

如何在多个C#类之间共享属性

来自分类Dev

如何在多个测试类之间共享JUnit BeforeClass逻辑

来自分类Dev

如何在多个项目之间共享sbt插件配置?

来自分类Dev

如何在多个插槽与其父母之间共享状态

来自分类Dev

如何在多个进程之间共享stdout?

来自分类Dev

如何在多个jsp页面之间共享存储的对象?

来自分类Dev

如何在多个页面之间共享PHP变量?

来自分类Dev

如何在多个用户之间共享iPhoto库

来自分类Dev

如何在多个Ember项目之间共享组件

来自分类Dev

WatchConnectivity如何在多个WKInterfaceController之间共享会话?

来自分类Dev

如何在 AEM 中的多个 OSGI 服务之间共享配置

来自分类Dev

如何在多个 VkDevice 之间共享缓冲区(或图像)?

来自分类Dev

如何在页面上的多个元素之间共享 javascript/html?

来自分类Dev

如何在应用于同一对象的多个方面之间共享某些元数据?

Related 相关文章

  1. 1

    如何在多个视图之间共享数据

  2. 2

    如何在多个活动之间共享数据?

  3. 3

    如何在Swift中的多个ViewController之间共享数据

  4. 4

    如何在多个用户之间共享转账?

  5. 5

    如何在多个项目之间共享脚本?

  6. 6

    当我很少需要可变数据时,如何在多个线程之间共享数据?

  7. 7

    如何在组件之间共享数据/更改

  8. 8

    如何在javascript文件之间共享数据?

  9. 9

    如何在角度组件之间共享数据?

  10. 10

    Python-如何在多个流程之间共享大型数据集?

  11. 11

    如何在多个 Symfony 应用程序(相同的数据库,多个内核)之间共享身份验证?

  12. 12

    如何存储要在多个参与者之间共享的数据?

  13. 13

    如何在多个项目之间共享私人流星包?

  14. 14

    如何在多个C#类之间共享属性

  15. 15

    如何在多个jsp页面之间共享存储的对象?

  16. 16

    如何在多个C#类之间共享属性

  17. 17

    如何在多个测试类之间共享JUnit BeforeClass逻辑

  18. 18

    如何在多个项目之间共享sbt插件配置?

  19. 19

    如何在多个插槽与其父母之间共享状态

  20. 20

    如何在多个进程之间共享stdout?

  21. 21

    如何在多个jsp页面之间共享存储的对象?

  22. 22

    如何在多个页面之间共享PHP变量?

  23. 23

    如何在多个用户之间共享iPhoto库

  24. 24

    如何在多个Ember项目之间共享组件

  25. 25

    WatchConnectivity如何在多个WKInterfaceController之间共享会话?

  26. 26

    如何在 AEM 中的多个 OSGI 服务之间共享配置

  27. 27

    如何在多个 VkDevice 之间共享缓冲区(或图像)?

  28. 28

    如何在页面上的多个元素之间共享 javascript/html?

  29. 29

    如何在应用于同一对象的多个方面之间共享某些元数据?

热门标签

归档