【问题标题】:Not able to use alias across tests in Cypress无法在赛普拉斯的测试中使用别名
【发布时间】:2021-10-11 09:07:10
【问题描述】:

我正在尝试使用 cypress 创建 API 测试框架,但在使用别名访问测试之间的数据时遇到问题。有什么我遗漏的吗?

custom.js

Cypress.Commands.add('getResource', function (uri) {
    cy.request({
        url: uri,
        method: 'GET'
    }).then(function (response) {
        return cy.wrap(response);
    });
});

test.js

exports.__esModule = true;
context('requests', function () {
    it('validate get call response', function () {
        let re = cy.getResource('https://reqres.in/api/users?page=2','resp')
        re.then(function (response) {
            cy.wrap(response.body).as('respbody');
            cy.wrap(response.status).as('respstatus');
            //cy.log(JSON.stringify(response.body));
        });
    });
    it('Tests test', function () {
            cy.wait('@respbody').then((body) => {
                console.log(JSON.stringify(body));
            });
            
    });
});

柏树版本 - 8.2.0

【问题讨论】:

    标签: cypress


    【解决方案1】:

    按照设计,cypress 会在每次测试后清理别名。所以你可以做这样的事情cypress recipe

    您的getResource 自定义命令只使用一个参数,因此我们只传递了一个参数。

    exports.__esModule = true;
    let responseBody;
    let responseStatus;
    context('requests', () => {
        before(() => {
            cy.getResource('https://reqres.in/api/users?page=2')
                .then(function(response) {
                    responseBody = response.body
                    responseStatus = response.status
                })
        })
        beforeEach(() => {
            cy.wrap(responseBody).as('responseBody')
            cy.wrap(responseStatus).as('responseStatus')
        })
        it('Get Response status', function() {
            cy.wait('@responseStatus').then((responseStatus) => {
                console.log(responseStatus)
            })
        })
        it('Get Response Body', function() {
            cy.wait('@responseBody').then((responseBody) => {
                console.log(JSON.stringify(responseBody))
            })
        })
    })
    

    【讨论】:

    • 感谢您的快速回复,这对我有用。只是让您知道,看起来 cy.wait 仅适用于路线,因此将其更改为 get,它工作得很好。
    • 很高兴你能弄明白。
    • 如果使用黄瓜会发生什么,别名是否会被带入步骤?
    猜你喜欢
    • 2023-02-10
    • 2020-12-23
    • 2023-02-14
    • 1970-01-01
    • 2020-12-23
    • 1970-01-01
    • 2021-11-06
    • 1970-01-01
    • 2021-10-20
    相关资源
    最近更新 更多