根据茉莉花测试结果发送API调用的正确方法

时间:2019-05-30 09:07:10

标签: javascript jasmine protractor

我想要实现的是在名为TestLodge的外部测试用例管理系统中跟踪Protractor的测试结果。 流程是这样的: 1.通过GitLab管道部署Angular应用程序。 1a。在测试用例管理系统中创建了一个“测试运行”。 2.启动量角器测试(部署过程的一部分) 3.调用测试用例管理API来传递测试结果。

测试管理系统具有其API,该API允许在特定测试运行中进行调用和更新结果(例如TETS01-通过,TEST02-失败)。这样做的目的也是为了跟踪测试结果+测试管理系统可以根据测试结果在bug跟踪系统中自动创建票证。

我该如何正确地从Jasmine中提取测试结果,然后如何对测试管理系统进行API调用,以告知该测试哪个测试应该以通过/失败状态进行更新。 有没有什么库可以提取茉莉花结果并触发一些api调用? 我看到了2-3个用于TestRail的库(它也是一个测试管理系统),但是没有一个用于TestLodge的库。而且我的编程能力不足以使用节点的“ http.request”或类似的东西来独自创建功能。 关于我作为测试员的任何建议可以实现这一目标?

1 个答案:

答案 0 :(得分:0)

要获得测试结果,可以通过Jasmine记者进行。我将参考my previous answers中有关如何创建此类报告者的内容。在那种情况下,我的记者正在获取测试套件的结果并上传到dynamoDB。 请注意,尽管在此示例中禁用了控制流,所以使用async/await语法来管理Promise。

要发送请求,有一个有用的npm软件包,名为request,该软件包提供了用于创建http请求的简单语法。我最近在Protractor框架中一直使用此程序包,并取得了成功。 我将API调用的结构像这样

const request = require('request');

module.exports = class Endpoints {
    sampleRequest(token,  JSONbody) {
        let endpoint = 'http://yourURLEndpoint:9090/api'

        return new Promise((resolve, reject) => {

            let options = {
                method: "PATCH",
                headers: {
                    'Content-Type': 'application/json',
                    'Authorization': 'Bearer ' + token,
                },
                body: JSON.stringify(JSONbody),
            };

            request(
                endpoint,
                options ,
                function (error, response, body) {
                    if (!error && (response.statusCode >= 200 && response.statusCode < 300)) {
                        resolve(body);
                    } else {
                        console.log('error with request sent');
                        reject(JSON.stringify(response, undefined, 2));
                    };
                }
            );
        });
    };
}

Spec.js

let apiCallsFile = require('../apiCalls/restCalls');
let apiCalls = new apiCallsFile();

describe('Smoke test to', function () {

    it('add a life entity to the case', async function () {
        let testOutcome = {
            "testOutcome" : "FAIL",
            "testNumber" : "101"
        };

        let apiResult = await apiCalls.sampleRequest(bearerToken, idOfCase, {testOutcome );
        expect(apiResult.status).toBe(201);
    });
}