测试fixture参数的NUnit测试名称模板是什么



所以{a}指的是测试用例参数,但在测试用例的全名中,我们可以看到测试夹具参数。例如:

C:DFDeploymentSmokeTestsLocalTestProfiles> $xml = [xml](cat ..TestResultsCSTests.xml)
C:DFDeploymentSmokeTestsLocalTestProfiles> $TestCase = $xml.SelectSingleNode('//test-case')
C:DFDeploymentSmokeTestsLocalTestProfiles> $TestCase.name
SiteCheck
C:DFDeploymentSmokeTestsLocalTestProfiles> $TestCase.fullname
Web.ForEachWebServer(nan4dfc1app01_10.192.78.221_smoketest.dayforce.com).SiteCheck
C:DFDeploymentSmokeTestsLocalTestProfiles>

nan4dfc1app01_10.192.78.221_smoketest.dayforce.com是Test Fixture参数的ToString()结果,NUnit将其包含在测试用例的全名中。

但是,似乎没有办法在--test-name-format命令行参数中提供它。

或者我错了,有办法吗?

澄清

我不想更改测试的全名,只想更改它的名称。我的问题是使用TestFixtureSource的fixture下的测试名称。事实上,假设fixture名称为F,其下的测试为T1T2,并且fixture被参数A1A2调用两次。默认的测试名称模式是{m}{a},但{a}不包括fixture参数。因此,测试报告显示了这些测试名称(不是全名):

T1 
T2 
T1
T2

这就是它在Azure DevOps测试中的显示方式(发布测试插件在发布结果时使用测试名称)

我想把名字改成与全名相等,因为全名是:

F(A1).T1
F(A1).T2
F(A2).T1
F(A2).T2

我意识到,如果名称是F(A1).T1,那么全名将是F(A1).F(A1).T1,但由于UI不显示全名,我可以接受。

测试用例的全名始终是附加在包含类的全名后面的名称(默认或由您设置)。没有办法改变这一点。

更新:根据您的说明,您希望测试用例名称包含传递给特定fixture实例的参数。使用当前的"静态"设计,这也是不可能的。

[这里以一种特殊的NUnit-y方式使用"static"one_answers"dynamic"。从某种意义上说,所有这些都是动态的,因为它发生在执行运行程序时。但我们用它来表示"加载(创建、发现)测试时预先确定",而不是"在每次测试执行时确定"。]

在发现(并命名)测试时,还没有实例化任何固定装置。运行TestCaseSource方法的代码生成测试名称,用于测试夹具的每个实例。我们本可以采取不同的做法,但是。。。我们没有,因为没有人想到这个用例。

对不起!

PS:有一个长期存在的NUnit问题要求创建(我们称之为)"动态"测试用例,它可以很容易地包括您所要求的功能。

最新更新