使用excel电子表格的nodejs驱动的数据

问题描述:

我正在为我的工作场所做一些研究。该计划是通过nodejs使用javascript(因为我们有人知道这一点)。我们也将使用硒和视觉工作室来编写代码。使用excel电子表格的nodejs驱动的数据

我有一些基本的测试运行的一切工作。

我想知道的是,如何在java脚本中执行数据驱动测试,将数据表格拉出excel表单。我们每行可以有8-10列,每次测试最多可以有30行数据。任何指针将不胜感激。

我已经做了一些研究,但是我发现任何东西都是c#或普通的java。不确定在这种情况下使用的最佳插件。

那么,有优秀的阅读npm modules。除此之外,你可以保存为CSV,并且还有一些CSV-reading and writing modules

我不确定你是否看过它,但也有mochachai,这对测试非常有用。

所以我使用的一般体系结构会写一些摩卡测试,它从Excel或CSV文件中读取数据,然后使用该数据作为输入来运行测试。类似这样的:

var fs = require('fs'); 
var parse = require('csv-parse'); 
var expect = require('chai').expect; 

var csvData=[]; 

describe('When using some test data',() => { 
    before((done) => { 
    s.createReadStream(req.file.path) 
     .pipe(parse({delimiter: ':'})) 
     .on('data', function(csvrow) { 
     csvData.push(csvrow);   
     }) 
     .on('end',function() { 
     done(); 
     }); 
    }); 
    it ('should be able to pass a test with all data',() => { 
    csvData.forEach((datum) => { 
     // not sure what you're testing for, but check for each to pass here. 
     expect(datum).to.not.be.a('null'); 
    }); 
    }); 
}); 

请注意,我没有测试上述内容,但那是在你如何处理事情的大局中。

如果您正在测试的任何方法需要回调,则可以使用async/await语义,也可以使用it('test description', (done) => {});回调语法,如我对before调用所做的那样。

+0

谢谢你,我会看看摩卡/柴。我想我明白你在上面做了什么。你怎么能指定表中的不同列?例如说,我有三列“用户名”,“密码”,“ID”。我希望它读取该行,然后将该行上的每个项目保存为一个变量。一旦达到测试结束,它将使用下一行数据重复测试。对不起,如果我的知识不是很好,因为它对我来说是相当新的。 – Endorium

+0

这取决于您选择哪个CSV或Excel模块,但其中大多数假设或允许您指定第一行是“标题”,然后JS数组中的每个项目都是“{ header1:'item1',header2:'item2'}'等等。如果第一行的内容是'ID','username','password',那么这个数组看起来像'[{'ID':'1233','username':'bob','密码':'我sooper s3cr3t'}]' – Paul