我有很长的Scenario与Specflow,我需要添加3个用户,所有步骤都是相同的。我怎样才能在流程中重复几个步骤?
select min(date) as startdate,max(date) as enddate,c_val
from (select c_val,date,row_number() over(order by date)
-row_number() over(partition by c_val order by date) as grp
from t_ord
) t
group by c_val,grp;
Given Go to page
#Login
And Click on sign in button
When Enter email 'mail@gmail.com'
And Enter password '123456'
And Click on Submit button
And click on Events list button
And Open Event
And Go to new opened page
And Click on Register to event button
单击“继续”按钮时 那么3个用户应该在列表中
答案 0 :(得分:3)
我做了什么,似乎对我很好
注册多个用户' 3'到活动点击“人物”
[When(@"Register multiple users '(.*)' to event click on '(.*)'")]
public void WhenRegisterMultipleUsersToEventClickOn(int userQty, string title)
{
for (int i = 1; i <= userQty; i++)
{
WhenClickOnPersonTitle(title + " " + i);
WhenSelectTicketPackage();
WhenSelectTicketQuantity(10);
WhenClickOnSubmitRegistrationButton();
WhenEnterMailToRegisterToEvent("mail" + i + "@mai.com");
WhenEnterFirstNameToRegisterToEvent("Name" + i);
WhenEnterLastNameToRegisterToEvent("Lastname" + i);
WhenClickOnSubmitRegistrationButton();
WhenClickOnSubmitRegistrationButton();
}
}
答案 1 :(得分:0)
您可以在另一个步骤中调用步骤。在您的步骤中,类继承TechTalk.SpecFlow.Steps类,如此;
public sealed class RegisterMultipleUsersSteps : Steps
{
...
}
好的,为什么这有用?那么你现在可以调用5个步骤来创建一个单独的用户,所以做下面的事情
Scenario Outline: Register With Multiple Users
Given Go to page
...
When i create user 'Person1' 'Last name 1' with email 'mail1@mail.com'
When i create user 'Person2' 'Last name 2' with email 'mail2@mail.com'
When i create user 'Person3' 'Last name 1' with email 'mail3@mail.com'
...
Then Some condition
我假设您已经有了创建用户的步骤,因为您在问题中列出了自己已创建的个人凭据。
在此功能的步骤类中,您之前继承了spec flow steps类,执行以下操作
[When(@"I create user (.*) (.*) with email (.*)")]
public void WhenICreateUserTitleNameSurnameWithEmailAddress(var firstName, var lastName, var emailAdd)
{
// Now because you inherited the specflow steps class
// you can call other steps that you already have
When(string.Format("Enter mail {0} to register to event", emailAdd));
When(string.Format("Enter first name {0} to register to event", firstName));
When(string.Format("last name {0} to register to event", lastName));
When("Click on submit registration button");
}
这使您可以更轻松地创建用户,而不会过多地混乱您的场景。你也可以合并一些你的步骤。
附注,我认为用gerkhin语言编写的普遍接受的标准是保持功能尽可能简单,通常不超过5个步骤,这在specflows网站和其他地方的负载上都有记录。这个想法是,如果你需要更多,你应该拆分你的测试,或者可以合并一些功能。
我希望以上有所帮助。