从控制台运行参数化测试



我想只用测试用例中的一组参数运行测试方法。

我正在使用 NUnit 控制台 3.4.1。

代码示例:

[Category("SmokeTests")]
[TestCase("1 param", "2 param", "3 param")]
[TestCase("aaa", "bbb", "ccc")]
public void TestMethod(string a, string b, string c)
{
// do something
}

要运行的命令行:

nunit3-console.exe UiTests.dll --where "cat==SmokeTests and name==TestMethod("aaa", "bbb", "ccc")" --result C:tempresult.xml

当前 NUnit 返回错误

选择表达式中位置 50 处的意外标记"("。

你非常接近答案。

您的查询是

--where "cat==SmokeTests and name==TestMethod("aaa", "bbb", "ccc")"

查询有三点错误:

  1. 你认为引号需要用反斜杠("(转义是正确的,但由于参数的解释方式,反斜杠本身也需要转义(\"(。

  2. 为了绕过

    选择表达式中位置 50 处的意外标记"("。

    您还必须将name参数括在引号中(这些引号只需要转义一次(。

  3. 当 NUnit 为方法构造其名称时,它会以逗号分隔参数,但没有空格。您尝试在示例中运行的测试的名称是

    TestMethod("aaa","bbb","ccc")
    

    TestMethod("aaa", "bbb", "ccc")
    

那么,应该有效的查询是:

--where "cat==SmokeTests and name=="TestMethod(\"aaa\",\"bbb\",\"ccc\")""

传递给nunit3-console.exe的参数是:

  • --where
  • cat==SmokeTests and name=="TestMethod("aaa","bbb","ccc")"

然后 NUnit 可以解析namearugment,处理转义的引号,并运行您想要的测试。

参考:NUnit 文档中的测试选择语言。

相关内容

  • 没有找到相关文章

最新更新