我总是喜欢把事情分解成一组相关的信息。例如,如果我有一个用户类,我可能会将其分解为几个较小的类:LoginCredentials,ProfileInfo,Settings等,但我通常仍然有一个包含这些子类的顶级User类。
我当然建议的一件事是将对象传递给一个FillForm函数,而不是所有这些单独的函数。使用这种方法有一些很大的优势。首先,您可以有一些“常见”的预配置对象,用于许多测试用例。例如:
public class FormInfo
{
string Domain;
string Name;
string Category;
// etc...
public FormInfo(string domain, string name, string category)
{
Domain = domain;
Name = name;
Category = category;
// etc...
}
}
// Somewhere in your initialization code
public static FormInfo Info1 = new FormInfo("myDomain1", "myName1", "myCategory1");
public static FormInfo Info2 = new FormInfo("myDomain2", "myName2", "myCategory2");
You can still update one of your common merchants if you need to do something one-off:
// In your test case:
Info1.Category = "blah";
FormPage.FillForm(Info1);
或者,如有必要,您可以为特定测试用例创建一个全新的商家对象。您还可以使用这些对象执行字段验证之类的操作,或者我通常做的是打破特定字段验证的页面对象模式,因此,如果我正在验证商家域字段,我可能会这样做:
Info1.Domain = null; //This should make the FillForm function skip doing anything with this field.
FormPage.FillForm(Info1);
FormPage.DomainTextBox.Text = "field validation string";
此方法的另一个重要优点是,如果页面更新为添加、删除或修改字段,则只需更新 FormInfo 对象和 FillForm 函数,而不需要修改调用 FillForm 函数的特定测试用例 - 假设它们使用的是您的常见 FormInfo 对象之一。获得更多覆盖范围的另一种可能性是设置一个常见的FormInfo对象,为每个字段生成随机字符串,这些字段符合所有不同允许字符之间的最小/最大长度和周期。这允许您从同一组测试中获得一些额外的测试,尽管如果您开始仅从特定字符串获得失败结果,它也可能会增加一些噪音,因此请小心。