1

私は Soda.js、mocha、selenium RC を使用しています。私はテストをスピードアップしようとしていますが、私が考えていた方法の 1 つは、テストごとに新しいセッションを開始しているためです (つまり、新しいブラウザーを閉じたり開いたりしてサイトにログインすることを実行しています)。

さまざまなフォーラムやメッセージ ボードで、セッションを他の言語で再利用するという不完全な投稿を数多く見てきましたが、私のテストはすべて Javascript です。

テストを開始したら、以前のブラウザー/セッションを再利用する方法を知っている人はいますか?テストごとに新しいセッションを開始する必要はありません。

ソーダのテスト ランナーは次のようになります。

var soda = require('soda'),
util = require('util'),

//config object - values injected by TeamCity
config = {
    host: process.env['SELENIUM_HOST'] || 'localhost',
    port: process.env['SELENIUM_PORT'] || 4444,

   url: process.env['SELENIUM_SITE'] || 'http://google.com',      
    browser: process.env['SELENIUM_BROWSER'] || 'firefox'
};

describe("TEST_SITE", function(){

beforeEach(


    function(done){
    browser = soda.createOnPointClient(config);

    // Log commands as they are fired
        browser.on('command', function(cmd, args){
        console.log(' \x1b[33m%s\x1b[0m: %s', cmd, args.join(', '));
    });

    //establish the session
    browser.session(function(err){
        done(err);
    });

    }

);



afterEach(function(done){

    browser.testComplete(function(err) {
        console.log('done');
        if(err) throw err;
       done();
    });

});


describe("Areas",function(){
   var tests = require('./areas');
   for(var test in tests){
       if(tests.hasOwnProperty(test)){
           test = tests[test];
           if(typeof( test ) == 'function')
               test();
           else if (util.isArray(test)) {
               for(var i=0, l=test.length;i<l;i++){
                   if(typeof( test[i] ) == 'function')
                       test[i]();
               }
           }
       }

   }
});

});

4

1 に答える 1

1

私は自分の答えを見つけました。これに沿った私の答えのために、私は本当にモカにもっと集中する必要がありました:

    //before running the suite, create a connection to the Selenium server
before(
    function(done){
    browser = soda.createOnPointClient(config);

    // Log commands as they are fired
        browser.on('command', function(cmd, args){
        console.log(' \x1b[33m%s\x1b[0m: %s', cmd, args.join(', '));
    });

    //establish the session
    browser.session(function(err){
        done(err);
    });

    }
);

//after each test has completed, send the browser back to the main page (hopefully cleaning our environment)
afterEach(function(done){browser.open('/',function(){
    done();
});
});

//after the entire suite has completed, shut down the selenium connection
after(function(done){

    browser.testComplete(function(err) {
        console.log('done');
        if(err) throw err;
       done();
    });

});

これまでのところ、新しいセッションを開始するよりもセッションを再利用しても、実際のパフォーマンスの向上は見られませんでした。私のテストにはまだほぼ同じ時間がかかります。

于 2012-12-20T14:33:26.447 に答える