如果我必须进行REST调用并将响应值与UI进行比较,那么步骤定义将如何构建?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如果我必须进行REST调用并将响应值与UI进行比较,那么步骤定义将如何构建?相关的知识,希望对你有一定的参考价值。

这是一个示例步骤定义,我希望最终从UI和GET API获取学生的名字和姓氏并进行比较。此时,我只是尝试打印GET响应,然后从那里构建测试用例

但它没有进行服务调用,而黄瓜显示了通过的步骤。我确定我的步骤定义格式不正确。我怎么能以差异的方式写这个。我在这里提到这篇文章: - https://github.com/cucumber/cucumber-js/blob/master/docs/support_files/step_definitions.md

            Then(/^I check the student info against the service response$/, function(){
                var request = require('request');
                var options = {
                    method: 'GET',
                    url: 'https://examples.com/manager/01',
                    headers: {
                        'Authorization': 'username',
                        'Accept': 'application/json',
                        'Accept-Language': 'en-us',
                        'userID': 'Ap123'
                    },
                    };

function callback(error, response){
                        console.log("inside callback");
                        if (!error && response.statusCode == 200) {
                            var info = JSON.parse(body);
                            console.log(response);
                            console.log(info);
                    }
                }

                //text from page object and call to GET Service
                return this.pages.prd2Page.getstudentInfo().then(text => {
                    console.log("text from the UI: " + text);
                    request(options, callback);
                });
            });
答案

我能够以这种方式成功进行GET调用

Then(/^I check the manager info against the serice response$/, function () {
    //var request = require('request');
    var request = require('request-promise');
    var options = {
        method: 'GET',
        url: 'https://examples.com/manager/01',
        strictSSL: false,
        headers: {
            'Authorization': 'username',
            'Accept': 'application/json',                
            'userID': 'Ap123'
        },

    };

    return request(options).then(repos => {
        console.log(repos);
    }).catch(err => {
        console.log("Api call failed");
    });
});

我删除了UI步骤。我必须把它们放回去,但由于承诺的怪癖,服务没有被调用。我安装了另一个名为“request-promise”的npm模块来帮助我使用“.then”语法来构建我的步骤定义

以上是关于如果我必须进行REST调用并将响应值与UI进行比较,那么步骤定义将如何构建?的主要内容,如果未能解决你的问题,请参考以下文章

如何在java中进行rest api调用并映射响应对象?

如何处理多个字符串值并将这些字符串值与用户输入进行比较? [复制]

JAVA中调用配置文件的值与从数据库中取出的值进行比较

Java,将键盘输入值与 file.txt 值进行比较

将一个表中的多个值与另一个表中的多个值进行比较

c# 在 LINQ 查询返回的列表中查找项目并将其值与列表中的另一个项目进行比较