我对 Selenium 和 MSTEST 还很陌生。我已经能够运行一些测试用例,但很难组织事情。我有一个场景,我有一个测试用例来测试系统中帐户记录的创建,然后我还有其他情况需要对此类帐户记录执行进一步的测试。
我的方法是为每个测试用例创建新的帐户记录,并且我正在扩展我首先用来创建帐户记录的同一类。以下是示例代码:
// Web Base Class
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Support.UI;
namespace TestAutomation.WebBase
{
public class WebBaseClass
{
public static IWebDriver driver;
public static WebDriverWait wait;
[TestInitialize]
public void DriverSetUp()
{
driver = new ChromeDriver();
driver.Manage().Window.Maximize();
wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
}
public void CleanUpTest()
{
driver.Quit();
}
}
}
=========================================
//OrgBase
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium;
using OpenQA.Selenium.Support.UI;
using SeleniumExtras.WaitHelpers;
using OpenQA.Selenium.Interactions;
using TestAutomation.WebBase;
namespace TestAutomation.OrgBase
{
[TestClass()]
public class OrgBaseClass : WebBaseClass
{
[TestInitialize]
public void OrgBaseSetUp()
{
// Login
ILoginManager.UILogin(driver, wait);
}
[TestMethod()]
public void CreateOrg()
{
// Create Organisation record code
}
} //Organisation
} //namespace
================================================
//Validate Account Number
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium;
using OpenQA.Selenium.Support.UI;
using SeleniumExtras.WaitHelpers;
using System.Xml.Linq;
using OpenQA.Selenium.Interactions;
using tetsAutomation.OrgBase;
namespace TestAutomation
{
[TestClass()]
public class Organisation : OrgBaseClass
{
[TestInitialize]
public void SetUp()
{
//Empty. Initializing everything from base classes
}
[TestMethod()]
public void ValidateAccountNumber()
{
Console.WriteLine("Viola. All done");
}
} //Organisation
} //namespace
当尝试运行 Organization.cs 文件中的 ValidatieAccountNumber() 方法时,我尝试通过扩展 OrgBaseClass 来创建 Org/Account 记录。我不确定这是否是正确的方法,或者我应该有一个单独的类来创建测试数据,该数据实际上将具有与 OrgBaseClass 中相同的代码,并且我不想有重复的代码。
在理想的测试框架中,这将如何完成?
此外,我面临的另一个问题是,当我运行上面的代码时,它会打开多个浏览器并在所有浏览器中运行自动化。
测试应该相互隔离,因此不建议通过扩展测试类来创建测试数据。您最终将测试耦合在一起,这样一个测试中的失败会级联到其他测试。
这里的问题是代码重用,而不是测试重用。您有需要重用的重要测试设置逻辑。通常的解决方法是创建额外的实用程序类来执行此设置,这使得编写测试变得更容易。您可以尝试剧本设计模式。这与页面对象模型模式完美搭配。
当您逐渐意识到您的自动化测试框架需要与其测试的应用程序一样多的设计和分析时,您会感到痛苦。您发现的测试自动化框架的任何设计模式都很大程度上依赖于面向对象编程的基本原则:封装、数据隐藏、关注点分离、继承和多态性。最重要的是SOLID设计原则、依赖注入和控制反转。
创建一个强大且可重用的自动化测试框架使您牢固地进入测试自动化工程师的领域。
不幸的是,没有一种真正的方法来进行自动化测试。这是一个非常广泛的主题,几乎涉及计算机编程中的每个子主题。这个问题类似于问“我如何决定企业 Web 应用程序的架构?”简单的问题。非常复杂的答案。