Мне всегда нравится разбивать вещи на группы связанной информации.Например, если у меня есть пользовательский класс, я могу разбить его на несколько более мелких классов: LoginCredentials, ProfileInfo, Settings и т. Д., Но у меня все равно будет класс пользователя верхнего уровня, содержащий эти подклассы.
Одна вещь, которую я бы порекомендовал, это передать объект одной функции 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 для генерации случайных строк для каждого из полей, которые соответствуют минимальной / максимальной длине и циклу между всеми различными разрешенными символами.Это позволяет вам провести дополнительное тестирование из того же набора тестов, хотя это также может добавить некоторый шум, если вы начнете получать результаты сбоев только из определенных строк, поэтому будьте осторожны.