所以{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
,其下的测试为T1
和T2
,并且fixture被参数A1
和A2
调用两次。默认的测试名称模式是{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问题要求创建(我们称之为)"动态"测试用例,它可以很容易地包括您所要求的功能。