我们有相当多的测试,需要绕过负载均衡器,以便直接与特定的web服务器对话。
每个测试都使用TestCaseSource
属性来修饰,该属性指定在运行时确定要访问的web服务器列表的函数。
因此,如果有n个测试T1、T2、.、Tn和m服务器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_
开头的其他测试一起运行因此,从本质上说,重命名测试用例并不会分割子测试用例。对我不好。
那么,有没有办法在运行时按照我需要的方式改变订单呢?
发布于 2019-01-31 06:46:14
使用TestCaseSourceAttribute
是不可能做到这一点的。为单个测试方法生成的所有测试用例都一起运行。
另一种分组测试的机制是通过夹具。如果您将类设置为参数化的夹具,并使用TestFixtureSourceAttribute将其传递给web服务器,那么您就可以控制每个夹具中测试的顺序。
您将将传递给夹具的参数保存为实例成员,并在每个测试中使用它。这可能比您正在做的事情更简单、更容易阅读,因为只有一个引用,而不是很多引用。
https://stackoverflow.com/questions/54448634
复制相似问题