En boucle sur un test de rapporteur avec des paramètres
J'ai un ensemble d'écran de fumée tests qui sont tous à peu près identiques. Je voudrais les mettre dans une boucle et en boucle sur un tableau de paramètres. Cependant, les tests sont en cours d'exécution asynchrone et donc la boucle est terminée avant que les tests sont exécutés. Cette résultats dans le test exécuté 8 fois le 8 paramètre au lieu d'une fois pour chaque paramètre.
describe('Admin Console Campaigns', function() {
var ptor;
var adminUrl;
var testParams = [
{title: 'Dashboard', urlSuffix: '/communic8' },
{title: 'Campaign Report', urlSuffix: '/Reports/Campaign' },
{title: 'Partner Campaign Usage', urlSuffix: '/Reporting/PartnerCampaignUsage' },
{title: 'Campaign Template Usage', urlSuffix: '/Reporting/CampaignTemplateUsage' },
{title: 'Email Usage Report', urlSuffix: '/Reports/EmailUsage' },
{title: 'Campaign Templates', urlSuffix: '/CampaignTemplates' },
{title: 'Campaign Template Groups', urlSuffix: '/CampaignTemplateGroups' },
{title: 'New Template', urlSuffix: '/CampaignTemplates/Add' }
];
beforeEach(function() {
ptor = protractor.getInstance();
ptor.ignoreSynchronization = true;
var testParams = smokescreenTestConfig.adminCampaigns;
adminUrl = ptor.params.http + ptor.params.client + ptor.params.staging + ptor.params.sharedvue + ptor.params.admin;
});
afterEach(function(){
});
for(var i=0; i < testParams.length; i++){
var testParam = testParams[i];
it('should have a ' + testParam.title + ' tab', function() {
testUrl = adminUrl + testParam.urlSuffix;
basicTestFunctions.pageExists(testUrl, ptor, browser, testParam.title);
}, 60000);
};
});
Quelqu'un a une idée de comment faire pour forcer la boucle d'attente sur les tests?
source d'informationauteur Robert McCraw
Vous devez vous connecter pour publier un commentaire.
Ok compris ça il y a un moment, désolé j'avais oublié que j'avais posté ici. Essentiellement, nous avons créé un tableau de configuration dans un autre fichier, (même si ce n'est pas nécessaire, il suffit de rendre le code plus facile à lire), puis a tiré de ce tableau dans une var à droite au-dessus de l'essai, nous avons voulu le répéter. Ensuite, nous l'avons entouré le test dans une fonction à l'intérieur d'une boucle et a passé les lignes de notre tableau avec chaque tour de boucle.
La clé ici est que "testParams[i]" à la fin de la fonction de passage à l'itération de la boucle. Cela force l'exécution synchrone.
Si vous souhaitez obtenir vraiment fou nous aussi fini par écrire un fichier de commandes qui dirige cet écran de fumée environ 50 fois de suite sur l'ensemble de nos clients. Nous avons écran de fumée l'ensemble de notre plate-forme en 10 minutes environ.
Vous pouvez également créer un tableau avec des spécifications:
Cela devrait fonctionner comme la solution proposée par Robert McCraw.
Avec certains de code asynchrone, vous pouvez résoudre ce problème assez facilement.
au lieu de courir
it('description', function () { //my test });
utilisationit('description', function (done) { //my test with a call to done() at the end }
Vous pouvez utiliser ce fragment comme un exemple :
De la sortie attendue :
Espère que cette aide.