2017-03-13 4 views
0

私は過去3ヶ月間、自分自身で自動テストを行っています。以前の経験(私の人生でコード化されたことがないマニュアルテスター)を持たなかったので、私は(このボードの助けを借りて)セレンのオブジェクトベースのフレームワークを作成し、このフレームワークにリンクしてテストを実行し、複数のクラウドドライバにまたがるテストの実行

しかし、今ではテストスイートを利用して、クラウドベースのサービスで複数の環境に渡す必要があります。私が持っている問題は、テストセットを実行するたびに環境を定義する必要があることです。理想的には、テストを実行する環境(Firefox、Chrome、IEなど)を定義して、各ブラウザで17回のテストを3回実行するようにテストスイートを設定したいと考えています。

私はローカルでこれを実行するためにシステムを設定する代わりに、

私のコードのサンプルは以下のようである私のクラウドサービス(現在は夫婦をtrialling)のための私の別のメソッドを呼び出す方法を持っている必要はありません。

テストコード - 現在、私は私のドライバのいずれかの方法ではなく、すべてをコメントする必要はあり

namespace Kukd_Consumer_Test 
{ 


    [TestFixture] 
    public class Login : Consumer_Standard_Functionality 
    { 




     [Test] 
     public void User_Can_Login() 
     { 
      LoginPage.LoginAs("xxxxxxxxxx").WithPassword("xxxxxxx").Login(); 
      Assert.IsTrue(AccountPageBtns.IsAtAccountPage("Hi Richard"), "Failed to login"); 
      AccountPageBtns.Logout(); 
     } 


    } 
} 

私の標準機能を(ETC終了し、ドライバーはホームページに行く呼び出して)ログインしてください。私は私の地元のドライバー・クラス(プラスbrowserstack)はCBT

using NUnit.Framework; 
using OpenQA.Selenium; 
using OpenQA.Selenium.Chrome; 
using OpenQA.Selenium.Firefox; 
using OpenQA.Selenium.Remote; 
using System; 

namespace Kukd_Consumer_Tests 
{ 
    public class driver 
    { 
     public static IWebDriver Instance { get; set; } 



       public static void InitializeChrome() 
     { 
      Instance = new ChromeDriver(@"C:\Users\richard.cariven\Documents\Visual Studio 2015\Drivers\Chrome"); 
      Instance.Manage().Window.Position = new System.Drawing.Point(2192, -963); 
      Instance.Manage().Window.Maximize(); 
      Instance.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(10)); 

     } 


     public static void InitializeFireFox() 
     { 
      Instance = new FirefoxDriver(); 
      Instance.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(10)); 

     } 

     public static string BSusername = "xxxxxxxxxxx"; 
     public static string BSpassword = "xxxxxxxxxxx"; 






     public static void InitialiseBrowserstack() 

     { 
      IWebDriver driver; 

      DesiredCapabilities caps = new DesiredCapabilities(); 

      //caps.SetCapability("name", TestContext.TestName); 
      caps.SetCapability("browser", "IE"); 
      caps.SetCapability("browser_version", "11.0"); 
      caps.SetCapability("os", "Windows"); 
      caps.SetCapability("os_version", "10"); 
      caps.SetCapability("resolution", "1024x768"); 


      caps.SetCapability("browserstack.user", BSusername); 
      caps.SetCapability("browserstack.key", BSpassword); 

      driver = new RemoteWebDriver 
      (new Uri("http://hub-cloud.browserstack.com/wd/hub/"), caps); 

      Instance = driver; 
     } 

     public static void refresh() 

     { 
      Instance.Navigate().Refresh(); 
     } 

     public static void Quit() 
     { 
      Instance.Quit(); 
     } 


    } 
} 

public class Consumer_Standard_Functionality 
    { 


     [SetUp] 
     public void Init() 

     { 
// currently have to comment out all but the one I want to run. 

      driver.InitializeChrome(); 
      //driver.InitializeFireFox(); 
      //CBT_Driver.InitialiseChromeCBT(testName); 
      //CBT_Driver.InitialiseFFCBT(testName); 
      //CBT_Driver.InitialiseIECBT(testName); 
      //driver.InitialiseBrowserStack(); 
      Homepage.GoTo_HomePage(); 
     } 


     [TearDown] 
     public void Cleanup() 
     { 
      driver.Quit(); 
     } 

ので、私は、私は(ローカルまたはクラウドベース)に私のテストを実行する環境を定義することができます理想的にここに倍数を定義することができるようにしたいですクラス - それはすべてのテストに適用されますので、だから私は行うことができるために必要なものを私の共通のテストでは、各クロスブラウザのテストパラメータに

namespace Kukd_Consumer_Tests 
{ 
    public class CBT_driver 
    { 
     public static IWebDriver Instance { get; set; } 


     public static string CBTusername = "xxxxxxxx"; 
     public static string CBTpassword = "xxxxxxxxxx"; 


     public static void InitialiseChromeCBT(string testName) 
     { 
      IWebDriver driver; 

      var caps = new DesiredCapabilities(); 

      caps.SetCapability("name", testName); 
      caps.SetCapability("build", "1.0"); 
      caps.SetCapability("browser_api_name", "Chrome56x64"); 
      caps.SetCapability("os_api_name", "Win8"); 
      caps.SetCapability("screen_resolution", "1366x768"); 
      caps.SetCapability("record_video", "true"); 
      caps.SetCapability("record_network", "true"); 


      caps.SetCapability("username", CBTusername); 
      caps.SetCapability("password", CBTpassword); 

      driver = new RemoteWebDriver 
      (new Uri("http://hub.crossbrowsertesting.com:80/wd/hub"), caps); 

      Instance = driver; 

     } 
     public static void InitialiseFFCBT() 
     { 
      IWebDriver driver; 

      var caps = new DesiredCapabilities(); 

      caps.SetCapability("name", "test name"); 
      caps.SetCapability("build", "1.0"); 
      caps.SetCapability("browser_api_name", "FF46x64"); 
      caps.SetCapability("os_api_name", "Win8"); 
      caps.SetCapability("screen_resolution", "1366x768"); 
      caps.SetCapability("record_video", "true"); 
      caps.SetCapability("record_network", "true"); 


      caps.SetCapability("username", CBTusername); 
      caps.SetCapability("password", CBTpassword); 

      driver = new RemoteWebDriver 
      (new Uri("http://hub.crossbrowsertesting.com:80/wd/hub"), caps); 

      Instance = driver; 

     } 
     public static void InitialiseIECBT(string testName) 
     { 
      IWebDriver driver; 

      var caps = new DesiredCapabilities(); 

      caps.SetCapability("name", testName); 
      caps.SetCapability("build", "1.0"); 
      caps.SetCapability("browser_api_name", "IE10"); 
      caps.SetCapability("os_api_name", "Win8"); 
      caps.SetCapability("screen_resolution", "1366x768"); 
      caps.SetCapability("record_video", "true"); 
      caps.SetCapability("record_network", "true"); 


      caps.SetCapability("username", CBTusername); 
      caps.SetCapability("password", CBTpassword); 

      driver = new RemoteWebDriver 
      (new Uri("http://hub.crossbrowsertesting.com:80/wd/hub"), caps); 

      Instance = driver; 
     } 

    } 
} 

を選ぶためにセットアップし、/ CBT ENVIR私のブラウザのそれぞれをループすべてのテストのためのonments。

大歓迎現在、NUnitの(私はNUnitの中でこの種のものを行うことが容易である読んだので、MSTestをから変更)

を使用して任意のアドバイスを設定アム、私は非常に多くを使用していたのでことをお勧めされています私のテストではこれは不可能かもしれません。検索や調査の多くの後

よろしく

リチャード

答えて

0

は、私は私の現在の枠組みを廃止し、xUnitフレームとFactoryモデルを使用して、それを書き換えることにしました。いったんこの構造が完成すれば、それは維持しやすく、将来は脆弱になるはずです。