Specflow-如何传递步骤定义中带有括号的数据而不会丢失任何数据

时间:2018-10-04 02:22:36

标签: bdd specflow

我有一个像这样的Specflow测试

When I create a team with <TeamName> <MemberName> <MemberMobileNumber> successfully
Examples:
|TeamName|MemberName|MemberMobileNumber|
|Apple(RD) |James(Smith)|(09)1234567|

如果您观察到,我们在测试数据的详细信息中有括号,当我读取数据时,数据会失真。有没有一种方法可以使数据不失真地编写步定义。 步骤定义看起来像这样

[When(@"I create a team with (.*) (.*) (.*) successfully")]
public void WhenICreateATeamWithTeam......{

}

非常感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

在您的示例中看不到任何数据丢失: enter image description here

我也尝试过使用Table,并且效果很好。

尝试执行以下步骤时,数据丢失:

[When(@"I create a team with \(.*) \(.*) \(.*)")]

我的SpecFlow版本是2.4.0

答案 1 :(得分:0)

对于问题中显示的.feature文件中的给定规范:

Scenario Outline: workWork
   When I create a team with <TeamName> <MemberName> <MemberMobileNumber> successfully
   Examples:
   |TeamName    |MemberName     |MemberMobileNumber |
   |Apple(RD)   |James(Smith)   |(09)1234567        |

对于步骤定义,如:

[When(@"I create a team with (.*) (.*) (.*) successfully")]
public void WhenICreateATeamWithAppleRDJamesSmithSuccessfully(string p0, string p1, string p2)
{

}

然后在步骤p0,p1和p2参数中的数据符合预期:p0 =“ Apple(RD)”,p1 =“ James(Smith)”,p3 =“(09)1234567”。

有第二种方法,对每个.feature文件中的文本数据使用“”,然后在每个表达式的正则表达式(在step.cs文件中生成的方法中)之后加上“(。*)”输入参数。

Scenario Outline: workWork
    When I create a team with <TeamName> <MemberName> <MemberMobileNumber> successfully
    Examples:
    |TeamName       |MemberName     |MemberMobileNumber |
    |"Apple(RD)"    |"James(Smith)" |"(09)1234567"      |

[When(@"I create a team with ""(.*)"" ""(.*)"" ""(.*)"" successfully")]
public void WhenICreateATeamWithAppleRDJamesSmithSuccessfully(string p0, string p1, string p2)
{

}