Wenn ich Cross-Browser-Tests mit Nunit mit TestFixture implementieren meine Tests fehlgeschlagen, wenn sie zusammen laufen, bestanden, wenn sie einzeln ausgeführt werden. Ausnahme wurde ausgelöst, wenn die SendKeys-Methode aufgerufen wurde, weil das Argument null war, aber dies ist nicht die Ursache, denn wenn ich diesen Test erneut durchführe, wird der Test bestanden. Natürlich habe ich versucht, dieses Problem zu debuggen, aber ich finde keine Lösung. Der einfache OpenHomePage-Test funktioniert einwandfrei. Hier ist mein Code:Test fehlgeschlagen, wenn zusammen laufen, bestanden, wenn einzeln ausgeführt
[TestFixture(typeof(ChromeDriver))]
[TestFixture(typeof(FirefoxDriver))]
public class TestClass<TWebDriver> where TWebDriver : IWebDriver, new()
{
[OneTimeSetUp]
public void CreateDriver()
{
try
{
PropertiesCollection.driver = new TWebDriver();
Console.WriteLine("Opened browser");
PropertiesCollection.driver.Url = "http://localhost:81/";
Console.WriteLine("Opened URL");
PropertiesCollection.driver.Manage().Window.Maximize();
//initialize test data from excel sheet
ExcelLib.PopulateInCollection(@"c:\users\bolec\documents\visual studio 2015\Projects\RowingSectionTests\RowingSectionTests\TestData.xlsx");
}
catch (Exception msg)
{
Console.WriteLine(msg.ToString());
}
}
[OneTimeTearDown]
public void FixtureTearDown()
{
HomePageObjects homeObj = new HomePageObjects();
homeObj.Logoff();
if (PropertiesCollection.driver != null) PropertiesCollection.driver.Quit();
}
[TearDown]
public void TearDown()
{
//Take screen on failure
if (TestContext.CurrentContext.Result.Outcome.Status.Equals(TestStatus.Failed))
{
string fileName = Regex.Replace(TestContext.CurrentContext.Test.FullName + "_" + DateTime.Now.ToString(), "[^a-z0-9\\-_]+", "_", RegexOptions.IgnoreCase);
((ITakesScreenshot)PropertiesCollection.driver).GetScreenshot().SaveAsFile(@"c:\users\bolec\documents\visual studio 2015\Projects\RowingSectionTests\RowingSectionTests\Screenshots\" + fileName + ".png", System.Drawing.Imaging.ImageFormat.Png);
}
}
//will always passed
[Test]
public void OpenHomePage()
{
HomePageObjects homeObj = new HomePageObjects();
}
//login with correct credentials will login to acc
[Test]
public void Login()
{
HomePageObjects homeObj = new HomePageObjects();
LoginPageObjects loginObj = homeObj.ToLoginPage();
loginObj.Login(ExcelLib.ReadData(1, "UserName"), ExcelLib.ReadData(1, "Password"));
//checking is URL correct after loggin
Assert.AreEqual("http://localhost:81/", PropertiesCollection.driver.Url.ToString());
//checking is login is correct on navbar
Assert.AreEqual(homeObj.GetUserLoginStringInButton().ToLower(), ExcelLib.ReadData(1, "UserName").ToLower());
}
Nein. Da er NUnit V3 verwendet (sonst würde es nicht kompilieren), sind OneTimeSetUp und OneTimeTearDown korrekt. Die Attribute TestFixtureXxxxxXx sind in V3 veraltet, würden aber dasselbe tun. – Charlie
Haben Sie die parallele Ausführung aktiviert? Wenn dies der Fall ist, können sich die beiden Vorrichtungen gegenseitig stören. – Charlie
Ist PropertiesCollection.driver eine statische? Wenn ja, haben Sie zwei verschiedene Fixtures, die dieselben Daten verwenden. Wird definitiv nicht parallel funktionieren. Wenn nicht parallel, muss jeder Test nach sich selbst aufräumen. – Charlie