2016-07-06 8 views
2

私は分度器を初めて使用しています。誰でも分度器を使ってデータ駆動型のテストを私に案内してくれますか?以下は、code、configファイル、およびtestdata.jsonファイルです。分度器のデータ駆動テスト

'use strict'; 

var testData = require('../example/Test Data/Test.json'); 

describe('LoginPage', function() { 

var loginData = require('../example/Test Data/Test.json'); 

testData.forEach(function (data) { 
    it("data.description", function (data) { 
     browser.get("http://127.0.0.1:8080/#/login"); 
element(by.model("username")).sendKeys(data.username); 
element(by.model("password")).sendKeys(data.passwordField); 
element(by.buttonText("Authenticate")).click(); 

}); 
}); 
}); 

設定ファイル:

// An example configuration file. 
exports.config = { 
directConnect: true, 

//seleniumAddress: 'http://localhost:4444/wd/hub', 
// Capabilities to be passed to the webdriver instance. 
capabilities: { 
'browserName': 'chrome' 

}, 

// Framework to use. Jasmine is recommended. 
framework: 'jasmine', 

// Spec patterns are relative to the current working directory when 
// protractor is called. 
specs: ['Testpage.js'], 

// Options to be passed to Jasmine. 
jasmineNodeOpts: { 
defaultTimeoutInterval: 30000 
} 
}; 

JSONファイル:

[ 
{ 
"username": "admin", 
"passwordField": "admin" 
}, 

{ 
"username": "admin1", 
"passwordField": "admin2" 
} 
] 

問題ではなく、データを取る、それはすべての入力ボックスに未定義を書いているということです。私は、オブジェクトのその配列を想定しています

+0

する必要があります! –

答えて

1

、あなたは各配列の要素を反復処理し、直接その内容にアクセスし、あなたがtestdata.forEach()を必要としないことができ、あなたはこのような何かを試みることができる助けてください -

'use strict'; 

var testData = require('../example/Test Data/Test.json'); 

describe('LoginPage', function() { 

var loginData = require('../example/Test Data/Test.json'); 


it("data.description", function() { 
    browser.get("http://127.0.0.1:8080/#/login"); 
    element(by.model("username")).sendKeys(testData[0].username); 
    element(by.model("password")).sendKeys(testData[0].passwordField); 
    element(by.buttonText("Authenticate")).click(); 

    }); 
    }); 
}); 

上記のコードをテストしていないので、テストで直接使用するのではなくPage Objectsを使用する必要があります。

+0

はい、もちろん、Page Objectはテストのアプローチになるはずです。しかし、私の焦点は、テストでデータ駆動型のアプローチを取ることでした。 ありがとう、それは私のために働いた。 分度器に関する情報がどこから得られるか教えてください。 –

4

私たちは、トラクタでデータ駆動テストを行うのに役立つジャスミンデータプロバイダパッケージを用意しています。

Code Snippet: 

var using = require(‘jasmine-data-provider); 
var loginData = require('../example/Test Data/Test.json'); 


describe('Data driven test spec', function() { /*define sets of input data as array in method called arrayOfData*/ 
    function arrayOfData() { 
     return [ 
       { 
       "username": "admin", 
       "passwordField": "admin" 
       }, 

      { 
       "username": "admin1", 
       "passwordField": "admin2" 
       } 
      ] 
     //or return loginData json object here 
    } /*below one will loop the test case based on data size and pass single data set every time till complete the end of array*/ 

using(arrayofData, function (inputData) { 
    it('test case logic to be executed for each set of data', function() { 
     browser.get("http://127.0.0.1:8080/#/login"); 
     element(by.model("username")).sendKeys(inputData.username); 
     element(by.model("password")).sendKeys(inputData.passwordField); 
     element(by.buttonText("Authenticate")).click(); 
    }); 
    }); 
}); 

:ジャスミン・データ・プロバイダパッケージがまだマシンにインストールされていない場合は、テストスクリプトを実行するために行く前に、コマンドの下に実行してインストールしてください。私はあなたのアプローチは非常に合理的だと思う

var testParams = testConfig.testArray; 
testParams.map(function(testdata) { 
     it('write your test here', function() { 
      console.log('Username: ', testData.username); 
     }); 
}); 
+0

こんにちは、Sureshさん、 「モジュール:jasmine-data-provider not found」というエラーが表示されます。 –

+0

@SahilSehgal、エラーはあなたのマシンにjasmine-data-providerパッケージがまだインストールされていないことを示します。コマンドプロンプトまたはターミナルからコマンド "_npm install jasmine-data-provider_"を実行して、jasmine-data-providerをインストールします。それが動作します。 –

+0

@SureshSalloju素敵なパッケージは、それが存在することを知らなかった。今度は 'Array.map()'から 'using'を使うように変更しました。ありがとう! – alecxe

1

マップ機能を使用して簡単な方法。定義されていない理由は、データを 'done'パラメータに入れるためです。これは、 'it'関数が定義している関数を呼び出すときに渡される 'done'オブジェクトにデータを設定しています。

testData.forEach(function (data) { it("data.description", function (data) {

それはあなたがあなたのテストデータに持っているオブジェクトの配列のように見える

testData.forEach(function (data) { it("data.description", function() {

+0

nice n simple thx – danday74

+1

あなたは大歓迎です! –

0

npm install jasmine-data-provider