我是selenium webdriver的新手。我在每个单元测试中有七个不同的单元测试和不同的测试方法,我使用相同的网站并在每个单元测试中登录详细信息。有没有办法只创建一个文件或Testfixturesetup或任何东西?并在每个单元测试中使用该文件的引用,以便我可以在一个影响所有Testmethods的地方更改登录详细信息。
IWebDriver driver = new FirefoxDriver();
driver.Navigate().GoToUrl("example.com);
driver.Manage().Window.Maximize();
IWebElement email = driver.FindElement(By.Id("Email"));
email.SendKeys("abc@xyz.com");
IWebElement password = driver.FindElement(By.Id("Password"));
password.SendKeys("abcdef");
System.Threading.Thread.Sleep(500);
IWebElement login = driver.FindElement(By.XPath("//button[contains(.,'Log In')]"));
login.Submit();
System.Threading.Thread.Sleep(500);
有没有办法在一个文件中创建这些代码行?并在单元测试中使用其参考。所以每次我尝试运行testmethod时,首先进入门户并登录,以便于维护代码。如果我想更改登录详细信息,以便我可以在一个地方更改。请专家需要你的帮助。提前致谢。
答案 0 :(得分:2)
您发布的问题与Selenium无关。基本上你需要运行几个语句(如上所示)作为每个测试的一部分,这些语句存在于一个测试类文件中。
正如您所建议的那样,'TestfixtureSetup'和'TestFixtureTearDown'可用于单元测试,不能用于测试方法。对于测试方法,您需要使用TestInitialize和TestCleanUp来实现它。
我建议创建基类,它包含常用方法(如登录)并将该类继承到所需的单元测试类/测试类文件。并在Initializing部分调用相关方法。
public class TestBase
{
IWebDriver driver;
public TestBase()
{
driver = new FirefoxDriver();
driver.Navigate().GoToUrl("example.com);
driver.Manage().Window.Maximize();
}
public void Login()
{
IWebElement email = driver.FindElement(By.Id("Email"));
email.SendKeys("abc@xyz.com");
IWebElement password = driver.FindElement(By.Id("Password"));
password.SendKeys("abcdef");
System.Threading.Thread.Sleep(500);
IWebElement login = driver.FindElement(By.XPath("//button[contains(.,'LogIn')]"));
login.Submit();
System.Threading.Thread.Sleep(500);
}
}
[TestClass]
public class LoginTests : TestBase
{
[TestInitialize]
public void MyTestInit()
{
Login();
}
[TestCleanup]
public void MyTestCleanUp()
{
LogOut(); // Implement log out functionality.
}
[TestMethod]
public void LoginTestOne()
{
// test method logic here.
}
}
(伪代码 - 未遵守)
答案 1 :(得分:0)
您可以使用不同的单元测试框架进行硒测试 -
所有这些框架都支持某种形式的[setup]和[teardown]属性,以便您可以应用各种设置并创建可在多个测试中使用的全局对象。
如果您使用的是VS集成单元测试框架,请参阅以下方法 -
Nunit也有类似的东西,例如[SetUp],[TeaDown],[TestFixtureSetUp],[TestFixtureTearDown]。 更多详情 - http://www.nunit.org/index.php?p=setupFixture&r=2.4