2017-07-24 2 views
0

Ich bin ein wenig Forschung für meinen Arbeitsplatz. Der Plan ist, JavaScript (wie wir Leute, die das wissen) über Nodejs zu verwenden. Wir werden Selen mit diesem und Visual Studio zum Schreiben des Codes verwenden.Daten mit Nodejs mit Excel-Tabellen

Ich habe einige grundlegende Tests laufen mit allem funktioniert.

Was ich gerne wissen würde ist, wie kann ich datengetriebene Tests in Java-Skript, die die Datenform Excel-Tabellen ziehen. Wir könnten 8-10 Spalten pro Zeile und bis zu 30 Datenzeilen für jeden Test haben. Alle Hinweise würden sehr geschätzt werden.

Ich habe ein wenig Forschung gemacht, aber alles, was ich finde, ist C# oder normales Java. Unsicher von den besten Addons auch in diesem Szenario.

Antwort

0

Nun, es gibt Excel-Lesung npm modules. Kurz gesagt, Sie könnten nur als CSV speichern und es gibt eine Reihe von CSV-reading and writing modules.

Ich bin mir nicht sicher, ob Sie es gesehen haben, aber es gibt auch mocha und chai, die sich hervorragend zum Testen eignen.

Also würde die allgemeine Architektur, die ich verwenden würde, einige Mocha-Tests schreiben, die Daten aus der Excel- oder CSV-Datei einlesen und dann Tests mit diesen Daten als Eingabe ausführen. Etwas wie folgt aus:

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

Hinweis, habe ich nicht getestet, die oben, aber das ist im Baseballstadion, wie man die Dinge nähern würde.

Wenn für die zu testende Methode ein Rückruf erforderlich ist, können Sie entweder async/await-Semantik verwenden oder die Rückrufsyntax it('test description', (done) => {}); verwenden, wie beim Aufruf before.

+0

Vielen Dank dafür und ich werde Mocha/Chai betrachten. Ich denke, ich verstehe, was Sie oben getan haben. Wie können Sie verschiedene Spalten im Blatt angeben? Zum Beispiel sagen, ich habe drei Spalten 'Benutzername', 'Passwort', 'ID'. Ich möchte, dass es diese Zeile liest und dann jedes Element in dieser Zeile als Variable speichert. Sobald es das Ende des Tests erreicht, wiederholt es den Test unter Verwendung der Daten der nächsten Zeile. Tut mir leid, wenn mein Wissen nicht gut ist, da es ziemlich neu für mich ist. – Endorium

+0

Es hängt davon ab, welches CSV- oder Excel-Modul Sie auswählen, aber die meisten von ihnen setzen voraus oder erlauben Ihnen anzugeben, dass die erste Zeile die 'headers' ist und jedes Element im JS-Array ein Objekt ist, das wie folgt aussieht: '{ header1: 'item1', header2: 'item2'} 'und so weiter. Oder, um Ihr Beispiel zu verwenden, wenn die erste Zeile den Inhalt 'ID', 'Benutzername', 'Passwort' hat, dann würde das Array aussehen wie '[{' ID ':' 1233 ',' Benutzername ':' Bob ',' Passwort ':' Ich bin sooper s3cr3t '}] ' – Paul