2016-08-17 10 views
2

ちょうどselenium grid 2のセットアップを行いました。ハブとノードが起動しています。例えば、ノード1つの走行試験xに対して、C#でのSelenium Grid Nunitでの並列実行

1)が異なるノード(並列)の間でテストケースを配布します。私は、次の操作を行うために、私が今欲しい、私のテストを実行するために、セレンwebdriverを+ C#+ NUnitのを使用していますノード2ランニングテストY

2)私はブラウザと各ノードのプラットフォーム・タイプを設定できるようにする必要があり、私が今することができるよ私は1つのセットアップ機能を作ることであり、それをすべてのノードで同じプラットフォームとブラウザを使用するので、どのように各ノードの望ましい機能を割り当てることで達成できるのですか?

問題は、私が来て、コードを実行したときに、私はテストが平行で同時に実行することはない見つけることです。

私のコードのスナップショット:

using System; 
using OpenQA.Selenium; 
using OpenQA.Selenium.Firefox; 
using OpenQA.Selenium.Chrome; 
using OpenQA.Selenium.Safari; 
using OpenQA.Selenium.Edge; 
using OpenQA.Selenium.IE; 
using OpenQA.Selenium.Support.UI; 
using OpenQA.Selenium.Remote; 
using NUnit; 
using NUnit.Framework; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading; 
using System.Threading.Tasks; 


namespace GridTest 
{ 
    [TestFixture] 
    [Parallelizable] 
    public class Test_Grid 
    { 
     IWebDriver driver; 

     [SetUp] 
     public void Setup() 
     { 

      /////IE Setup///////// 
      var capabilities = new DesiredCapabilities("internet explorer", string.Empty, new Platform(PlatformType.Any)); 
      capabilities.SetCapability("ignoreProtectedModeSettings", true); 

      driver = new RemoteWebDriver(new Uri("http://localhost:4445/wd/hub"),capabilities); 

     } 

     //Search google test 
     [Test] 
     [Parallelizable] 
     public void GoogleSearch() 
     { 
      string homepage = "http://www.google.com"; 
      //Navigate to the site 
      driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(10)); 

      driver.Navigate().GoToUrl(homepage); 

     } 

     [Test] 
     [Parallelizable] 
     public void BingSearch() 
     { 
      //var driver = new FirefoxDriver(); 
      driver.Navigate().GoToUrl("http://www.bing.com"); 

     } 


     [TearDown] 
     public void Teardown() 
     { 

      driver.Quit(); 
     } 
    } 
} 

答えて

3

簡単なのですが...あなたは答えが気に入らないでしょう。 :-(

NUnitのは、まだ並列にフィクスチャのテストメソッドを実行することはできません。それだけで並列に個々の備品を実行します。

だからあなたはあなたがフィクスチャレベルで並列に実行したいそれらのものをモデル化する必要があります、正しいブラウザを選択することがOneTimeSetUp使用。

+0

どのノードをどのテストに対して実行するかをカスタマイズすることはできますか? –

+0

OneTimeSetUpを使用して、各フィクスチャインスタンスでのテストの実行方法と場所を調整できます。申し訳ありませんが、私の答えはセレンの用語に入れられません...それは私のものではありません。 :-) – Charlie

+0

なぜNunitは2つの照明器具だけを並列に走らせているのですか、それともグリッド問題ですか? –

0

私はC#またはNUnitのを使用していないが、私は、java/TestNGのテストを分配する複数のグリッドを設定しています。

私が行ったことは、クラスごとに1つのテストを行うことです。次に、これらのパラメータを持つxmlテストスイートにコンパイルします。parallel = "tests" thread-count = "14"

また、グリッドノードにインスタンス数が指定されていることを確認します。

+0

:次に、以下のコマンドを使用します。クラスごとに? 、私は同じクラス内で複数のテストをしている場合、それらは順番に並行して実行されません、私は右ですか? –

0

NUnitのは、メソッドレベルの並列化をサポートしています。あなたはParallelScope.Allを設定する必要があります。

私は別のブラウザ上で(メソッドレベル)並列実行される作業のプロジェクトを開発してきましたNUnitを使用します。

プロジェクトに2つのテストフィクスチャがあり、ファイル内の各テストが15個あり、すべての30個のテストを並列に実行する場合。そう、それはあなたが一つのテストを作成する必要があり、並列に実行するテストを行うためのNUnitのと同じだ

nunit3-CONSOLE.EXE xxxtests.dll --workers = 30

https://github.com/atmakur/WebTestingFramework

関連する問題