2017-08-03 136 views
0

我正在使用Testcafe上传文件到我的应用程序,我需要运行命令“npm run test”。目前,我在我的规范脚本中硬编码了文件路径。将文件路径从命令行传递到“npm run test”?

我想要实现的是在n次不同的文件中循环运行相同的规范。到目前为止,实现这一目标的唯一方法是为具有不同文件名的n文件编写n-specs,但由于所有规格都相同,我不想这样做。

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') 
    }); 

我想知道,如果它可以自动使文件名可以从我的规格某些目录和替代阅读。

回答

1

如果您想对多个文件名执行相同的操作,您可以将它们的列表保留在文件中,并在夹具内部或测试内部的循环中使用它。例如,如果在files.js文件中有一组文件路径,则可以使用以下方法:

// 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

谢谢,它的工作原理很棒! – inSynergy