如何配置SpecFlow,使其不会将时序信息显示为测试文本的一部分,例如
- > done:Steps.ThenIWillBeDeniedAccess()(0.0s)
干杯.雅.
我们正在应用BDD并使用SpecFlow和Selenium.验收标准在Gherkin中规定.
我对Given子句有疑问.
一个例子可能是......
因此,对于'鉴于我在订单详情页面',我们必须登录并准备好提交订单.但是我们如何达到这一点呢?
如果我们已经有相关的现有SpecFlow步骤,我们可以使用这些(通过Selenium)来找到正确的点 - 这样的事情......
我们甚至可以将步骤代码中的所有步骤放在"鉴于我在订单详情页面上"
但是我们是否有权使用Selenium来实现Given?或者我们应该找到一些方法来设置会话/数据库中的所有相关状态/数据而无需通过UI?
我怀疑这里没有对错.我不得不说它对我们来说非常好,但我们一直在寻求改进我们的方法.因此,非常有兴趣听取任何有实际经验的人的意见.
我希望Stack Overflow是正确的论坛(不能不认为它不是 - 如果是这样,请不要让我失望!)...
假设我有一个使用两个不同类中包含的步骤的场景.有没有办法让他们俩都能在IWebDriver不经过同一个实例的情况下拥有句柄ScenarioContext.Current["webdriverVariableName"]?
那太难看了.有更干净的方式吗?
我打算创建一个具有public static IWebDriver在每个场景开始时分配的属性的类,这样我的所有步骤都可以引用它,但是当我开始并行运行它时,我认为这不会起作用,因为每个场景将覆盖全局驱动程序.
我们用标准规定编写用户故事作为XI想要Y以便Z.现在随着BDD和Gerkhin语言格式的流行以指定要求,是否有人有将用户故事转换为gerkhin格式的经验.您是否发现以这种格式从业务中获取需求更容易,更直观,您是否在此过程中获得了任何好处?
TL; DR:我想传递一些代码,然后在try catch Pseudo代码中执行:
void ExecuteInTryCatch(BlockOfCode)
{
try
{
execute BlockOfCode with possible return value
}
catch (MyException e)
{
do something
}
}
Run Code Online (Sandbox Code Playgroud)
长版本:我正在编写Web应用程序的自动化测试,并希望执行一些代码,这些代码将捕获可能由非确定性原因导致的某些异常,并在最终抛出异常之前重试执行该代码一段时间.我已经看过可能为此目的使用委托,但我很困惑如何实现这一点,我从未使用过lambda表达式,这更令人困惑.
目标是能够将此代码重用于各种硒动作.对于Ruby而言,这是相当简单的,但在C#中,并非如此.
我们如何在步骤定义中检索/获取功能,方案标题和标签名称?
例如,我有一个功能文件booksearch,其中包含一项功能:
Feature: Book Search
Scenario: Title should be matched
I perform a simple search on 'abc'
------------------------
------------------------
[When(@"I perform a simple search on '(.*)'")]
public void WhenIPerformASimpleSearchOn(string searchTerm)
{
--------
----------
//custom log
WriteLogs(int stepNum,string scenarioName,string tagname,string stepDescription,string stepResult)
}
Run Code Online (Sandbox Code Playgroud)
如何在给定方案的步骤定义中检索/获取要素和方案标题和标记名称?
我们使用MSTest作为单元测试提供商.
我一直在下面发现教程这里的SpecFlow测试报告生成.
我的问题是,当我运行该工具时,我收到以下消息:
元素Target中的属性"Label"无法识别
我能够显示我正在运行版本4.x,因为当我使用Visual Studio 2012运行MSBuild时,命令提示符我可以看到以下内容:
Microsoft(R)Build Engine版本4.0.30319.17929 [Microsoft .NET Framework,版本4.0.30319.18052]
我已按照此处的建议创建了配置文件
但不幸的是我仍然得到错误.该项目在git本地运行,过去使用配置文件修复了此问题,但是自从交换到VMware虚拟机后,它现在又重新出现了.
我还右键单击>属性,表明该文件使用的是.NET 4.0,另外还创建了一个直接链接到MSBuild目录的环境变量.我花了很长时间浏览互联网,但无法实现这一点.请帮忙!
非常感谢您提供的任何帮助,
干杯!
我陷入了困境,试图找出构建CRUD测试的最佳方法.在我的应用程序中,用户可以创建几种类型的"任务".我目前的实现类似于以下内容:
Scenario: Create Task-Type A
Given I am on a user's profile page
And Have access to create tasks
When I create a new task with a unique title and description
Then The confirmation prompt should display
Scenario: Read the Task-Type A
Given A new task was created
When I search the text on the page for the unique title
Then I should find the task
And All the details of the task should match what was created …Run Code Online (Sandbox Code Playgroud) 我一直在编写一些BDD场景并从中编写自动化测试一段时间,但我仍处于发现阶段.
我可以看到Visual Studio为我提供了编写场景,场景大纲或场景模板的选项.
我已经想出了Scenario和Scenario Outline之间的区别(第一次运行一次,第二次运行的例子就像你放的那么多 - 如果我错了,请纠正我或添加一些东西).
但是我发现关于"场景模板"的信息很少.谁有人解释这个区别?谢谢!
我想按照功能示例逐个执行两个测试.它工作但我不知道如何在第二次测试完成时关闭浏览器.
我已经尝试过AfterFeature钩子,但它没有用.我刚刚登录.我想在这一刻关闭浏览器
这是代码
public class LoginSteps
{
[BeforeScenario("LoginProperly")]
public static void BeforeScenario()
{
Browser.Initialize();
}
[AfterScenario("LoginProperly")]
public static void AfterScenario()
{
Browser.ClearCache();
}
[AfterFeature("LoginProperly")]
public static void AfterFeature()
{
Browser.Quit();
}
[Given(@"I navigate to login page")]
public void GivenINavigateToLoginPage()
{
Browser.Wait();
Pages.Navigation.GoToSignIn();
}
[Given(@"I have completed the form with '(.*)' and '(.*)'")]
public void GivenIHaveCompletedTheFormWithAnd(string email, string password)
{
Pages.Login.LogIn(email, password);
}
[When(@"I press Submit")]
public void WhenIPressSubmit()
{
Pages.Login.ClickLogin();
}
[Then(@"I should see my account panel")]
public void ThenIShouldSeeMyAccountPanel() …Run Code Online (Sandbox Code Playgroud) specflow ×10
bdd ×6
gherkin ×3
c# ×2
selenium ×2
agile ×1
automation ×1
crud ×1
msbuild ×1
mstest ×1
nunit ×1
scenarios ×1
unit-testing ×1
user-stories ×1
webdriver ×1