Tag: specflow

带有Specflow的DataSource属性,用于多个浏览器测试

我在C#中进行了一些web ui测试,这些测试是通过browserstack中的selenium执行的。 目前这些只是简单的单位ms测试,它们在不同的浏览器中执行。 我想将测试移植到specflow,但我真的不知道如何进行多个浏览器测试。 目前,要在多个浏览器中执行这些测试,我使用的是DataSource属性,它基本上为XML文件中的相同测试提供不同的输入 [TestMethod] [Ignore] [DeploymentItem(“JLL.Specs\\Browsers.xml”)] [DataSource(“Microsoft.VisualStudio.TestTools.DataSource.XML”, “|DataDirectory|\\Browsers.xml”, “Row”, DataAccessMethod.Sequential)] public void LoadHomePageAndFindSearchBox() { … } 问题是Specflow不支持DataSource属性。 任何的想法? 这是XML文件: Firefox 31.0 Windows 7 1280×1024 Chrome 36.0 Windows XP 1024×768 …

SpecFlow – 从方法步骤查找所有方案并查找所有未实现的步骤

SpecFlow新手。 当specs项目变得更大时,组织文件并重构Given / When / Then字符串变得麻烦。 如何从方法步骤中查找要素文件中的方案。 有时我会在一些场景和function中共享一些步骤,但是从C#步骤方法查看如何在function文件中“查找所有引用”? 如何在所有function文件中获取所有未实现的场景步骤(字体颜色为紫色),以便我可以实现这些步骤。 目前,当我Run All测试时,没有关于未实现的步骤的警告。

在Specflow中重用两个要素文件之间的背景定义

我有几个specflow .feature文件来测试web api项目的不同实体。 对于每个实体,我必须在我的数据库中创建一个包含所有所需数据的背景,但在此之前我需要删除所有数据,并且需要使用web api调用删除(而不是通过sql查询)。 我这样做: Background: Given I make a new request to localhost on port 53364 And the path is api/voipport/deleteAll And the request type is Delete When the request has completed Given I make a new request to localhost on port 53364 And the path is api/loopblockingexception/deleteAll And the request type is […]

如何从Visual Studio 2012中的resharper测试会话窗口导航到function文件?

对于验收测试,我在Visual Studio 2012中使用TeckTalk SpecFlow。当我运行所有specflow场景时,打开resharperunit testing会话窗口我可以看到所有测试结果。 就像下面的屏幕截图一样。 问题是,当我在某个function文件中看到测试失败(场景)时,如何从resharper会话窗口直接导航到此function文件进行编辑?

为SpecFlow Scenario提供多个When语句

SpecFlow相当新,所以请耐心等待。 我正在和一位同事一起基本了解你可以用SpecFlow做些什么。 我们使用了经典的FizzBu​​zz问题,我们用它来测试unit testing,以比较我们如何在SpecFlow中执行类似的问题。 我们编写了我们的场景,如下所示增长代码: (请原谅命名只是想让测试结果) Scenario: 1 is 1 Given there is a FizzBuzzFactory When you ask What I Am with the value of 1 Then the answer should be 1 on the screen Scenario: 3 is Fizz Given there is a FizzBuzzFactory When you ask What I Am with the value of 3 […]

取消测试后清理

我目前正在通过visual studio进行测试。 在运行所有测试之前,我会自动创建一组具有已知凭据的用户,并在运行结束时删除这些用户。 但是,有时我需要在中途取消我的测试。 在这些情况下,测试永远不会有机会进行清理,这意味着测试运行中遗留了虚假的用户信息,并可能导致下一次测试运行崩溃(当它尝试将用户信息添加到数据库中时)。 无论如何,即使测试被取消,还是强制visual studio / mstest运行清理方法? 我知道一个选项是进行测试检查并确保用户信息不存在,如果确实在创建新用户之前删除了它。 但这仍然无法解决取消测试运行的问题,从而留下不需要的测试数据。 更新: 对于错误传达很抱歉,但是在测试开始时清理数据不是一种选择。 我给出了一个非常简单的问题视图,但简单地说,我没有简单的方法来确保在测试开始时不存在测试数据。 所有清理工作必须在测试结束时进行。

在SpecRun / SpecFlow测试执行报告中插入屏幕截图

我正在使用Speclen与Selenium WebDriver和SpecRun作为测试运行器来创建和执行自动化测试用例,我正在寻找一种在测试执行报告中插入屏幕截图的解决方案。 我写了一个方法来在每个Assert函数之后创建截图。 图像保存到特定位置,但是当我进行结果分析时,我必须遵循报告和图像。 将它们放在同一位置(恰好在报告html中)会很不错。 有没有办法执行此操作(类似于控制台输出)?

具有相同步骤的Specflow Feature文件导致多个浏览器实例启动

我在我的C#Specflow测试项目中至少有3个.feature文件,例如: Given I am at the Home Page 当我第一次在文件Feateure1.feature编写步骤并创建了step方法时,我将它放在一个step文件中,比如, Steps1.cs ,它inheritance自初始化FirefoxDriver的基类。 我的所有StepsXXXX.cs类都inheritance自这个基类。 然后,我写了Feature2.feature ,它也有一个步骤Given I am at the Home Page 。 并且步骤自动绑定到Steps1.cs中的Steps1.cs “直到现在,没问题。 这就是我想要的 – 在整个测试项目中都有可重复使用的步骤。 但问题是,每当我运行一个具有不同StepsXXXX文件步骤的场景时,我就会运行各种浏览器实例。 ====== 我很确定这是因为我的StepsXXXX (绑定类)都inheritance自这个具有自己的IWebDriver的基类,并且当调用该步骤时,其他所有内容(包括之前/之后的场景方法)叫做。 但我无法弄清楚如何解决这个问题。 我仍然想要可重复使用的步骤。 我试图将这些步骤放在基类中,但它没有用。 我也想过改变绑定,但是specflow使用有意义的字符串来做,我不想把它们改成误导性的字符串。 有没有人偶然发现了这个? 任何帮助都非常感谢。

SpecFlow和复杂对象

我正在评估SpecFlow ,我有点卡住了。 我发现的所有样品基本上都是简单的物体。 我正在开发的项目严重依赖于复杂的对象。 一个接近的样本可能是这个对象: public class MyObject { public int Id { get; set; } public DateTime StartDate { get; set; } public DateTime EndDate { get; set; } public IList Children { get; set; } } public class ChildObject { public int Id { get; set; } public string Name { get; set; […]

如何将Spec-flow表数据转换为不同的值

我需要转换通过table.CreateInstance()或table.CreateSet()获得的Spec-flow表数据。 我正在使用Spec流进行数据库测试,在某些情况下,Table字段值需要映射到不同的值,因为DB表存储代码而不是我们在function文件表中输入的值。 我不想在function文件中包含代码,因为它会降低可读性。 例如,如果我已经输入Single for status,如下所述,我希望它在数据传输对象/ POCO中映射或转换为S. 什么是最好的方法? 提前致谢。 Given I entered the following data into the new account form: | Name | Birthdate | Status | | John Butcher| 2/2/1902 | Single |