Visual StudioのC#とSeleniumで使用する場合、NUnitを理解するのに少し助けが必要です。C#とSeleniumを使ったNunitのパラメータ化
私は自己学習型のビデオとYouTube動画を使ってたくさんのテストをまとめたテストスイートを作りました。
プロジェクトは、複数のブラウザで単一のサイトに対して実行される一連の回帰テストである必要がありました。
私はこれを達成し、結果に非常に満足しています。
は、私が今やりたいことは、私は反対テストしてきたこの小さなさらに
製品を拡大しているコンテンツの99%が同じである別のクライアントのためにスキンを変えるされるサイトです。
ビジュアルスタジオで複数のプロジェクト/ソリューションを作成するのではなく、異なるスキンに対する回帰をカバーするために、もう少しダイナミックなことをしたいと思います。
私がしたいことは、テストケース/ブラウザ/ URLの組み合わせをパラメータ化することです。
- TestCase1 /クローム/ Site1の
- TestCase1 /クローム/サイト2
- TestCase1 /エッジ/ Site1の
- TestCase1 /エッジ/サイト2など
私が得ることができましたVisual Studioのテストエクスプローラでパラメータを認識することができますが、なんらかの理由で予期せぬ結果が発生するようです
- TestCase1/Site1の
- testcase1 /クローム
- TestCase1 /サイト2
- TestCase1/EDGEの/ etc。
私はここで、NUnitパラメータを使用してここで話していることに類似したことについて話し合うフォーラムを見ましたが、目的の結果を生成できませんでした。
私は以前と同じように別のNUnitを追加して渡すだけのケースだと思っていました。
namespace AutomationStuffs.SmokeTests
{
[TestFixture]
//[Parallelizable]
public class LoginTests : TestBase
{
[Test]
[TestCaseSource(typeof(TestBase), "BrowserToRunWith")]
[TestCaseSource(typeof(TestBase), "URLToRunWith")]
public void FirstTimeLogin(String BrowserName, String Url)
{
//Browser Driver Setup For test
Setup(BrowserName);
Assert.IsTrue(FiveComponentsAndDocStorePage.AssertOnThePage());
}
}
}
:ここ
namespace AutomationStuffs.SmokeTests
{
[TestFixture]
public class LoginTests : TestBase
{
[Test]
[TestCaseSource(typeof(TestBase), "BrowserToRunWith")]
public void FirstTimeLogin(String BrowserName, String Url)
{
//Browser Driver Setup For test
Setup(BrowserName);
//...DO SOME TESTING THINGS
}
}
}
namespace AutomationStuffs.Utilities
{
public class TestBase
{
public static IWebDriver driver;
public void Setup(String BrowserName)
{
Driver.Intialize(BrowserName);
//... DO SOME SETUP STUFF
LoginPage.GoTo();
//..I DO SOME LOGIN SETUP HERE
}
public static IEnumerable<String> BrowserToRunWith()
{
String[] browsers = BrowsersList.theBrowserList.Split(',');
foreach (String b in browsers)
{
yield return b;
}
}
}
}
namespace AutomationStuffs.Pages
{
public class LoginPage
{
public static void GoTo()
{
Driver.Instance.Navigate().GoToUrl(Driver.baseURL);
}
}
}
namespace AutomationStuffs.Selenium
{
public class Driver
{
public static IWebDriver Instance { get; set; }
public static string baseURL
{
get
{
string url = System.Configuration.ConfigurationManager.AppSettings["BaseUrl"];
return url;
}
}
public static string chromeDriver
{
get
{
string driver = System.Configuration.ConfigurationManager.AppSettings["ChromeDriver"];
driver = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, driver);
return driver;
}
}
public static string ieDriver
{
get
{
string driver = System.Configuration.ConfigurationManager.AppSettings["IEDriver"];
driver = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, driver);
return driver;
}
}
public static string edgeDriver
{
get
{
string driver = System.Configuration.ConfigurationManager.AppSettings["EdgeDriver"];
driver = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, driver);
return driver;
}
}
public static void Intialize(String BrowserName)
{
String DRIVER_PATH = chromeDriver;
String DRIVER_PATH_IEFF = ieDriver;
String DRIVER_PATH_EDGE = edgeDriver;
var optionsChrome = new ChromeOptions();
optionsChrome.AddArgument("start-maximized");
optionsChrome.AddArgument("no-sandbox");
var optionsIe = new InternetExplorerOptions();
if (BrowserName.Equals("ie"))
{
Instance = new InternetExplorerDriver(DRIVER_PATH_IEFF);
Instance.Manage().Window.Maximize();
}
else if (BrowserName.Equals("firefox"))
{
Instance = new FirefoxDriver();
Instance.Manage().Window.Maximize();
}
else if (BrowserName.Equals("edge"))
{
Instance = new EdgeDriver(DRIVER_PATH_EDGE);
Instance.Manage().Window.Maximize();
}
else
{
Instance = new ChromeDriver(DRIVER_PATH, optionsChrome);
}
}
}
}
私は私が(ちょうど複製し、適切な基礎となる方法を適応させることは明らかと)しなければならないだろうと思ったものです。ここで私が現在使用しているコードのslimmed down
バージョンです
それは答えのスポットです!どうもありがとうございます。私はTestCaseSourceの値をもう一度渡すことができ、NUnitはいくつかの魔法をやったという誤った印象の下で走っていました - 明らかに、私は非常に間違っていました。 – saab613