2017-08-03 1 views
0

J'utilise Testcafe pour télécharger des fichiers dans mon application, j'ai besoin d'exécuter la commande "npm run test". Actuellement, j'ai codé en dur le chemin du fichier dans mon script de spécification. Ce que je veux accomplir est d'exécuter la même spécification dans une boucle sur n fois avec des fichiers n-différents. A partir de maintenant, la seule façon d'y parvenir est d'écrire n-specs pour n-files avec des noms de fichiers différents, mais je ne veux pas faire cela car toutes les spécifications sont les mêmes.Passer l'ensemble des chemins Chemin de la ligne de commande vers "NPM Run Test"?

fixture `Getting Started` 
    .page `http://mywebsite.org`; 

test 
    .before(async t => { 
    console.log("User Log Tests"); 
    }) 
    ('File_Upload', async t => { 
    await t 
    .click('.home-search-btn') 
    .wait(5000) 
    .click('.menu.icon.large-visibility>ul>li:last- 
    child>ul>li>.checkbox') 
    .setFilesToUpload('input[type="file"]', [ 
     'home/name/fileDirectory/file.json', 
    ]) 
    .click('.icon.base-upload') 
    }); 

Je voulais savoir s'il est possible d'automatiser si les noms de fichiers peuvent être lus à partir un répertoire et de remplacement dans mes spécifications.

Répondre

1

Si vous souhaitez effectuer les mêmes actions pour plusieurs noms de fichiers, vous pouvez en conserver une liste dans un fichier et l'utiliser dans une boucle à l'intérieur de l'appareil ou à l'intérieur du test. Par exemple, si vous avez un tableau de chemins de fichier dans le fichier files.js, vous pouvez utiliser l'approche suivante:

// files.js 
export default files = ['file1.json', 'file2.json']; 

// test.js 
import files from './files.js'; 

fixture `Getting Started` 
    .page `http://mywebsite.org`; 

for(const file of files) { 
    test 
    .before(async t => { 
     console.log("User Log Tests"); 
    }) 
    (`File_Upload - ${file}`, async t => { 
     await t 
      .click('.home-search-btn') 
      .wait(5000) 
      .click('.menu.icon.large-visibility>ul>li:last-child>ul>li>.checkbox') 
      .setFilesToUpload('input[type="file"]', [file]) 
      .click('.icon.base-upload') 
    }); 
} 
+1

Merci, ça marche super !! – inSynergy