gpt4 book ai didi

javascript - 动态确定要从数据库运行哪些 Nightwatch.js 测试

转载 作者:太空宇宙 更新时间:2023-11-04 02:09:28 25 4
gpt4 key购买 nike

我正在为我们的一个网站设置夜间值类测试,并对其进行结构化,以便我们也可以分配测试的测试 Angular 色。只要我们只在开发环境中运行测试,这一切都非常有效。不幸的是,我们希望动态设置 Angular 色的属性以及他们需要根据执行的环境执行哪些测试。

问题是 nightwatch 在测试集合组装之前触发,因此它看不到要运行的测试。我想将夜巡从开始延迟到一切完全生成之后。

这是一个示例 Angular 色:

/// <reference path="../../basepersona.ts" />
/// <reference path="../../Utilities.ts" />
namespace Tests {
export class Dealer_Persona extends BasePersona {
constructor() {
super("Dealer");

var setParameters = function (persona, results, testsCallback, getTests) {
results.forEach((param) => {
switch (param.ParameterName) {
case "UserName":
persona.UserName = param.ParameterValue;
break;
case "Password":
persona.Password = param.ParameterValue;
break;
case "CreditCardNumber":
persona.CreditCardNumber = param.ParameterValue;
break;
case "CreditCardExpireMonth":
persona.CreditCardExpireMonth = param.ParameterValue;
break;
case "CreditCardExpireYear":
persona.CreditCardExpireYear = param.ParameterValue;
break;
case "CreditCardCVV":
persona.CreditCardCVV= param.ParameterValue;
break;
}
});

getTests(persona, testsCallback);


}

this.DAL.GetParametersForPersona(this, setParameters, this.DAL.SetTestsForPersona, this.DAL.GetTestsForPersona);

}
}
}


var persona = new Tests.Dealer_Persona();

这是一个非常基本的 Angular 色,其中一些 Angular 色需要为其属性使用一些非常环境特定的值。此外,由于需要发生多个回调才能正确加载 Angular 色,因此 GetParametersForPersona 方法必须接受多个回调函数并充当链中的第一步。

这是 DAL 类:

/// <reference path="interfaces.ts" />
/// <reference path="../node_modules/@types/node/index.d.ts" />
/// <reference path="../node_modules/@types/mssql/index.d.ts" />
export class DALMethods {
constructor() {
var nextVal = false;
process.argv.forEach(function (val, index, array) {
if (nextVal) {
site = val;
}

if (val.indexOf("site") > 0) {
nextVal = true;
}
});

var Setter = new Settings();

Setter.SetVariables(site);
}

GetTestsForPersona(persona: BasePersona, callback): any {
new sql.Request(connectionString)
.input('persona', sql.VarChar(100), persona.Name)
.input('environment', sql.VarChar(10), site)
.execute('usp_AutomatedTesting_GetPersonaTests').then(function (recordsets) {
callback(persona, recordsets[0]);
}).catch(function (err) {
// ... execute error checks
});
}

GetParametersForPersona(persona: BasePersona, callback, testsCallback, getTests): any {
sql.connect(connectionString).then(function () {
new sql.Request()
.input('persona', sql.VarChar(100), persona.Name)
.input('environment', sql.VarChar(10), site)
.execute('usp_AutomatedTesting_GetPersonaParameters').then(function (recordsets) {
callback(persona, recordsets[0], testsCallback, getTests);
}).catch(function (err) {
console.log(err);
});
}).catch(function (err) {
console.log(err);
});
}

SetTestsForPersona(persona, results) {
results.forEach((param) => {
switch (param.TestName) {
case "LoginFailure":
persona.Tests.push(new LoginFailure_Test(persona));
break;
case "LoginGuestFailure":
persona.Tests.push(new LoginGuestFailure_Test(persona));
break;
case "ShippingFailure":
persona.Tests.push(new ShippingFailure_Test(persona));
break;
case "PaymentFailure":
persona.Tests.push(new PaymentFailure_Test(persona));
break;
default:
console.log(param.TestName + " does not exist");
break;
}
});

persona.Tests.forEach((x) => {
Object.defineProperty(persona, x.Name, {
value: x.Test,
configurable: true, writable: true, enumerable: true
});
});

}
}

我认为我的问题源于这样一个事实:我不知道如何加载这些 Angular 色(有 23 个)、设置它们的参数并为它们分配测试(每个 Angular 色 n 个测试),从而阻止 Nightwatch 执行直到它们完全完成,以便 Nightwatch 能够看到它们。

任何见解将不胜感激!

最佳答案

我们最终使用 gulp 首先编译所有的 TS,然后调用 nightwatch。虽然不是我所希望的,但它确实有效。

关于javascript - 动态确定要从数据库运行哪些 Nightwatch.js 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42908511/

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