gpt4 book ai didi

Jasmine 获取当前测试结果

转载 作者:行者123 更新时间:2023-11-28 21:37:10 25 4
gpt4 key购买 nike

我正在使用 Jasmine - 3.3.1,结合了 ProtractorJS。

我的要求是存储每个规范(或描述/测试)的结果,并使用 afterEach() 方法在 Testrail 系统中更新结果。我想将结果存储到变量“testResult”中。

尝试了各种方法 - custom_reports.js 等,但无法得到我需要的。

代码片段:

var testResult;

describe('1st scenario', function () {
it('1st Test', function () {
expect(true).toBe(true);
testResult=5;
});
});

describe('2nd scenario', function () {
it('2nd Test', function () {
expect(true).toBe(true);
testResult=1;
});
});


afterEach(function () {
helper.updateResults("Section Name", testcaseID, testResult);
});

最佳答案

我通过创建自己的自定义报告器实现了类似的效果。我的记者在每个规范完成后将规范结果(它 block )上传到 dynamoDB 表,并在所有测试完成后上传套件结果(描述 block )。所有上传都是异步发生的,但在 onComplete 中等待所有异步上传操作。

很明显,我使用的是 async/await 方法,而不是您使用的 SELENIUM_PROMISE_MANAGER。我建议重新进行更改。

DBReporter.js

function dbReporter() {

this.jasmineStarted = function (options) {};
this.specStarted = function (result) {};
this.specDone = async function (result) {

if (result.status == 'pending') {
}
else if (result.status == 'passed') {
}
else if (result.status == 'failed') {
//Put your testrail interaction code here
}

testResultsUploadQueue.push(result);
};

this.suiteStarted = function (result) {};
this.suiteDone = function (result) {}
this.jasmineDone = async function (result) {}
}

module.exports = dbReporter;

conf.js

onPrepare: async () => {
//require the dpReporter file
let dbReporter = require('../src/functions/db-reporter');

//Declare a global variable that will contain all the asynchronous upload actions (promises)
global.testResultsUploadQueue = [];

//initialize the dbreporer
await jasmine.getEnv().addReporter(new dbReporter());
}),
onComplete: async() => {
//Wait for all uploads to resolve before completing
let testRulesUploadValue = await Promise.all(testResultsUploadQueue);
console.log(` ${testRulesUploadValue.length} result files uploaded to dynamoDB`);
}

您的规范文件无需更改

约束

  1. 我在处理与记者的异步操作时遇到了很多问题,这就是我选择使用队列方法的原因。我想不出如何解决这个问题,但这种方法确实有效。
  2. 您的 TestRail 操作必须返回 promise

为了理解解决方案,了解 Hook 的执行顺序很重要。

--- beforeLaunch           
--- onPrepare
--- jasmineStarted (set in jasmine reporter)
--- beforeAll
--- suiteStarted (set in jasmine reporter)
--- specStarted (set in jasmine reporter)
--- beforeEach
+++ afterEach
+++ specDone (set in jasmine reporter)
+++ suiteDone (set in jasmine reporter)
+++ afterAll
+++ jasmineDone (set in jasmine reporter)
+++ onComplete
+++ afterLaunch

关于Jasmine 获取当前测试结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57113427/

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