执行数据驱动测试

在开始了解使用 TAEF 执行数据驱动测试的提示和技巧之前,请确保已了解如何创作数据驱动测试以及如何使用 TAEF 执行测试。 回忆选择查询如何使用 TAEF 的方式也许会有所帮助。

本部分专门讨论如何执行基于表的数据驱动测试,但同样的基本原理也适用于基于 PICT 的数据驱动测试和基于 WMI 的数据驱动测试。

如果只想运行所有测试(包括数据驱动测试),则与通常使用 TAEF 运行测试的方式没有区别。 让我们以使用 TAEF 同时运行 CPP\DataDrivenExampleCSharp\DataDrivenExample 为例。 请记住,默认情况下,TAEF 会运行进程外测试。 如果要在 proc 中运行它们,请使用“/inproc”开关。

TE.exe Examples\CPP.DataDriven.Example.dll Examples\CSharp.DataDriven.Example.dll

查看指定元数据的 xml 文件和头文件。 仅运行优先级为 1 的数据驱动测试,如下所示:

TE.exe Examples\*.Tests.dll /select:"@DataSource=* And @Priority=1"

请记住,在 xml 文件中的行级别指定的元数据将替代在 TestMethod 创作级别指定的元数据。

让我们探索通过 TAEF 实现数据驱动测试执行的强大功能。 假设你想要仅重现 FirstTable() 函数中的第三行。 你可以使用行的索引执行此操作,该索引将为 2(索引从 0 开始):

TE.exe Examples\CPP.DataDriven.Example.dll /select:"@Name='*FirstTable*' and @Data:index=2"

请注意,选择条件现在有一个新的命名空间“@Data:”,可专门用于数据驱动测试。 运行上述测试时,你会发现,在数据驱动测试情况下,不是将通常的“#index”附加到测试名称,而是将“#black”附加到测试名称 - 这是为此行指定的特殊“名称”元数据。 有关详细信息,请参阅在行级别指定元数据。 尽管有此特殊名称,但仍可以使用该名称进行选择。 对于非常大的数据集,索引选择对选择行范围大有帮助。 例如(假设 - 不在示例中),如果你有一个具有 100 行的数据驱动测试(最大索引 = 99),而你只想执行索引大于 10 且小于 20 的行,那么你可以轻松地将其指定为:

TE.exe Examples\*.Tests.dll /select:"@Name='*MyDataDrivenTest*' and @Data:index > 10 and @Data:index < 20"

很多时候,你希望根据特定的数据值进行重现,而不必费力查找其索引。 在这种情况下,可以再次使用“@Data:”命名空间。 现在,在单元测试的本机示例中(请参阅创作数据驱动测试),你希望仅在“Theme”为“AeroBasic”时运行这些情况。

TE.exe Examples\CPP.DataDriven.Example.dll Examples\CSharp.DataDriven.Example.dll /select:"@Data:Theme='AeroBasic'"

这会显示在主机上,如下所示:

StartGroup: WEX::TestExecution::Examples::DataDrivenTests::SecondTable#2 [Process: 3588; Thread: 4584]
I am in second table.
Theme supplied as AeroBasic
EndGroup: WEX::TestExecution::Examples::DataDrivenTests::SecondTable#2 [Passed]
Summary: Total=1, Passed=1, Failed=0, Blocked=0, Not Run=0, Skipped=0

你还可以利用 /listproperties 进行数据驱动测试,以查看数据驱动测试的数据集和元数据(在测试方法级别和行级别指定的元数据组合)。 因此,

TE.exe Examples\CSharp.DataDriven.Examples.dll /listproperties

将列出所有方法(数据驱动和其他)以及各种级别可用和指定的元数据和数据值。

查看在行级别重写元数据指定数组参数类型简单数据驱动示例,了解提供更多见解的实例演练。