我有一项功能可以登录交易系统并锁定多个交易。每笔交易开始时都有很多可重复使用的步骤(初始交易设置)但是每笔交易都有不同的论点。
这是一个例子
Scenario: Trade 1
Given I have selected my test data: "20003"
And I have connected to VMS with the following details:
| Field | Value |
| Username | user |
| Password | password |
| Session | myServer |
When I run the DCL command to set my privileges to full
Then I expect to see the following:
| Pass Criteria | Timeout |
| Privileges Set | 00:00:30 |
When I ICE to the test account: "System Test"
Then I expect to be ICED see the following:
| Pass Criteria | Timeout |
| "ICED to System Test" | "00:00:10" |
When I run a dcl to delete the company: "Test_Company"
Then I expect to see a confirmation that company: "Test_Company" has been deleted or doesnt exist
因此,在这些步骤中,可以改变的两件事是"给定"参数所以测试数据ID和最后的测试公司。
我想要的是运行后台步骤的一些方法,以便能够知道要输入的参数。因此,如果它是Trade 1,例如它将进入20003,如果它是Trade 2进入20004等。 我可以这样做吗?我正在考虑使用"示例"场景大纲使用的表。或者有更好的方法吗?我不希望在我的所有场景中都有这些可重复的步骤,因为它占用了大量空间并且看起来不太可读。
答案 0 :(得分:1)
所以我做了一些搜索,无法找到一个不需要大量编码的解决方案,所以我做了这个:
这就是背景的样子
Background:
Given I have selected my test data:
| Scenario | ID |
| DirectCredit_GBP | 20003 |
| Cheque_GBP | 20004 |
| ForeignCheque_GBP | 20005 |
为了找到它应该使用哪一行,它后面的方法使用ScenarioContext。这是方法:
[Given(@"I have selected my test data:")]
[When(@"I have selected my test data:")]
public static void setTestDataID(Table data)
{
string scenario = ScenarioContext.Current.ScenarioInfo.Title;
string testDataId = data.ReadTable("Scenario", scenario, "ID"));
TestDriver.LoadTestData(testDataId);
}
该方法的作用是在表格中搜索方案名称(使用我编写的扩展方法)并获取ID,一旦获得ID,它就会将其传递给我的TestDriver方法。
似乎工作正常并使测试可读。