我写了这个小黄瓜功能,它完美无缺。但是我的公司让我能够在测试期间多次运行它。我们有一个应用程序的客户端控制服务器端,以模拟使用该软件的真人。 所以我的客户端实例化一次,并且必须在这种情况下运行3次。
我可以在这里使用“for”语句吗?
Feature: Test program startup time
Background:
Given my program is activated with a licence
Scenario: Startup
Given I want to use a clean installation
Given the user preferences file is user_startup_performances.config
Given the CurrentPath directory is empty
Given I want to monitor startup performances
Then I want to log those data
干杯!
答案 0 :(得分:2)
在您当前的功能中,您写道:
Given I want to monitor start-up performances for run '<id>'
当您在“给定”之后使用“我想要”时,您应该使用“然后”,因为您期待结果。
还有以下内容:
Then I want to log those data
与之前的Given非常相似,即您想获取日志数据。
我将你的场景改写为:
Feature: Test my program startup time
Background:
Given the system is activated with a license
And I have a clean installation environment
Scenario Outline: Startup
Given the system is ready to start
When I perform test run '<id>'
Then the system should start in less than 3 seconds
And the system should generate log data for test run '<id>'
Examples: Run ID
| id |
| 1 |
| 2 |
| 3 |
如果步骤:
And I have a clean installation environment
显式清除CurrentPath并将配置文件设置为user_startup_performances.config,然后我就摆脱:
And the user preferences file is user_startup_performances.config
And the CurrentPath directory is empty
这是我在建议的重写中所做的。
答案 1 :(得分:1)
我不确定这是“测试”。
它绝对是一个捕获数据的脚本,但测试中也有一个条件,一个必须验证的值或状态。
所以我希望看到更像
的东西Given I set something up
And I setup something else
....
When I run the program
Then my startup time should be less than 1 second
但是,我确实理解您希望以简单一致的方式运行此测试,虽然我认为SpecFlow可能不是实现您想要的最佳方法,但您可能需要考虑您的测试粒度。例如,您可以将场景重写为
Given I ...
When I run the program
Then my startup time should be less than 1 second
When I run the program
Then my startup time should be less than 1 second
When I run the program
Then my startup time should be less than 1 second
现在你已经测试了三次。
或者你可以把它写成
Given I ...
When I run the program 3 times
Then my startup time should be less than 1 second
然后在你的C#
中[When("I run the program (\d+) times")]
public void WhenIRunTheProgramManyTimes(int count)
{
for(int i=0; i++; i<count)
WhenIRunTheProgram();
}
[When("I run the program")]
public void WhenIRunTheProgram()
{
....
另请查看Dan North的Whose Domain is it anyway?,它可能会帮助您构建未来的场景。 : - )
答案 2 :(得分:0)
你是对的,这不只是一个测试,它是我们每晚运行的性能测试之一,以确保解决方案的稳定性。所以重点是获取数据而不是看绿色成功按钮:)
如果specflow不是最佳解决方案,哪种工具可以更好?
该软件的设计不允许我使用“当我运行程序3次”时,遗憾的是......我不想只重复同一行3次。
无论如何,我使用了场景大纲并定义了我的步骤以依赖于示例。然后,如果有人想要更改运行次数,他所要做的就是在示例中添加更多行。
我正在寻找循环语句,因为我是这些技术的初学者。对于第一种情况,这也不是最好的任务:)
谢谢!
PS:这是场景
Feature: Test my program startup time
Background:
Given my program is activated with a licence elite
Scenario Outline: Startup
Given I want to use a clean installation
Given the user preferences file is user_startup_performances.config
Given the CurrentPath directory is empty
Given I want to monitor startup performances for run '<id>'
Then I want to log those data
Examples: Run ID
| id |
| 1 |
| 2 |
| 3 |