我们有很多测试需要绕过Load Balancer才能直接与特定的Web服务器通信。
每个测试都用TestCaseSource
属性修饰,该属性指定一个在运行时确定要命中的Web服务器列表的函数。
因此,如果我们有n个测试T1,T2,...,Tn和m个Web服务器W1,W2,...,Wm(在运行时发现),则这些测试将按以下顺序运行:>
T1W1
T1W2
...
T1Wm
T2W1
T2W2
...
T2Wm
...
TnW1
TnW2
...
TnWm
现在,我需要它们以不同的顺序运行,即:
T1W1
T2W1
...
TnW1
T1W2
T2W2
...
TnW2
...
T1Wm
T2Wm
...
TnWm
我了解可以使用TestCaseData.TestName属性修改测试名称。但是这样做仍将一起运行子测试用例。例如,请参见下文:
测试nan4dfc1app01_RegisterAndStartShiftAndEnsureInvalidBadge
和nan4dfc1app02_RegisterAndStartShiftAndEnsureInvalidBadge
依次运行,而不是:
nan4dfc1app01_RegisterAndStartShiftAndEnsureInvalidBadge
与所有其他以nan4dfc1app01_
开始的测试一起运行nan4dfc1app02_RegisterAndStartShiftAndEnsureInvalidBadge
与所有其他以nan4dfc1app02_
开始的测试一起运行因此,实质上,重命名测试用例不会拆分子测试用例。对我不好。
那么,有没有一种方法可以在运行时按照我的需要更改订单?
答案 0 :(得分:0)
这是不可能的这样做一个TestCaseSourceAttribute
。所有单个测试方法产生的测试用例一起运行。
用于分组测试的另一种机制是通过夹具。如果您将类作为参数化的固定装置,并使用TestFixtureSourceAttribute将其传递给Web服务器,则可以控制每个固定装置中测试的顺序。
您可以将夹具的传入参数另存为实例成员,并在每次测试中使用它。这可能比您正在做的事情更简单,更容易阅读,因为只有一个引用来源,而不是很多。