Visual Studio - 运行 在 Visual Studio 中按顺序进行数据驱动测试
Visual Studio - Running datadriven test sequentially in Visual Studio
我正在 Visual Studio 中进行一些自动化测试。但是,不同的测试方法相互依赖,因此始终需要按顺序执行。这不是什么大问题,除非我使用数据驱动的测试方法。
这是我想要实现的目标:
[DataTestMethod]
[Datarow("Row1")]
[Datarow("Row2")]
public void DoThisFirst(){
//test execution
}
[DataTestMethod]
[Datarow("Row1")]
[Datarow("Row2")]
public void DoThisSecond(){
//test execution
}
我希望测试 运行 按以下顺序进行:
- DoThisFirst - 第 1 行
- 第二行 - 第 1 行
- DoThisFirst - 第 2 行
- DoThisSecond - Row2
相反,它只是 运行 第一种方法的所有迭代,然后是第二种方法的所有迭代。
我已经注意到这些方法没有出现在有序测试中,所以我改用播放列表文件。但是除了方法的执行顺序之外,似乎没有其他方法可以指定任何内容。
有什么想法吗?
一种实现您想要的方法如下。
有一个调用其他两个的数据驱动测试方法。向数据文件添加一个新列以指定对 运行 进行的测试。复制数据文件中的每一行并将两个测试规范添加到每一行。大纲代码将是:
[TestMethod]
public void TheTest()
{
switch ( DataSource["TestToRun"] )
{
case "DoThisFirst" : DoThisFirst(); break;
case "DoThisSecond" : DoThisSecond(); break;
default: Assert.Fail("Unknown test."); break;
}
}
CSV 格式的测试数据可能是:
TestToRun,UserName,Password,Etc1,Etc2
DoThisFirst,Row1User,Row1Passowrd,Row1Etc1,Row1Etc1
DoThisSecond,Row1User,Row1Passowrd,Row1Etc1,Row1Etc1
DoThisFirst,Row2User,Row2Passowrd,Row2Etc1,Row2Etc1
DoThisSecond,Row2User,Row2Passowrd,Row2Etc1,Row2Etc1
复制数据行很烦人,但是如果 TheTest
被修改为只调用 DoThisFirst()
然后调用 DoThisSecond()
那么如果 DoThisFirst()
失败那么 DoThisSecond()
不会被调用。但是,鉴于这两个测试必须按此顺序 运行 如果 DoThisFirst()
失败,则 运行 DoThisSecond()
可能不明智。
我正在 Visual Studio 中进行一些自动化测试。但是,不同的测试方法相互依赖,因此始终需要按顺序执行。这不是什么大问题,除非我使用数据驱动的测试方法。
这是我想要实现的目标:
[DataTestMethod]
[Datarow("Row1")]
[Datarow("Row2")]
public void DoThisFirst(){
//test execution
}
[DataTestMethod]
[Datarow("Row1")]
[Datarow("Row2")]
public void DoThisSecond(){
//test execution
}
我希望测试 运行 按以下顺序进行:
- DoThisFirst - 第 1 行
- 第二行 - 第 1 行
- DoThisFirst - 第 2 行
- DoThisSecond - Row2
相反,它只是 运行 第一种方法的所有迭代,然后是第二种方法的所有迭代。
我已经注意到这些方法没有出现在有序测试中,所以我改用播放列表文件。但是除了方法的执行顺序之外,似乎没有其他方法可以指定任何内容。
有什么想法吗?
一种实现您想要的方法如下。
有一个调用其他两个的数据驱动测试方法。向数据文件添加一个新列以指定对 运行 进行的测试。复制数据文件中的每一行并将两个测试规范添加到每一行。大纲代码将是:
[TestMethod]
public void TheTest()
{
switch ( DataSource["TestToRun"] )
{
case "DoThisFirst" : DoThisFirst(); break;
case "DoThisSecond" : DoThisSecond(); break;
default: Assert.Fail("Unknown test."); break;
}
}
CSV 格式的测试数据可能是:
TestToRun,UserName,Password,Etc1,Etc2
DoThisFirst,Row1User,Row1Passowrd,Row1Etc1,Row1Etc1
DoThisSecond,Row1User,Row1Passowrd,Row1Etc1,Row1Etc1
DoThisFirst,Row2User,Row2Passowrd,Row2Etc1,Row2Etc1
DoThisSecond,Row2User,Row2Passowrd,Row2Etc1,Row2Etc1
复制数据行很烦人,但是如果 TheTest
被修改为只调用 DoThisFirst()
然后调用 DoThisSecond()
那么如果 DoThisFirst()
失败那么 DoThisSecond()
不会被调用。但是,鉴于这两个测试必须按此顺序 运行 如果 DoThisFirst()
失败,则 运行 DoThisSecond()
可能不明智。