我确实参考了此链接并了解
IAnnotationTransformer
.
我有一个场景,我用数据提供者参数化了数据。需要使用调用 Count 对某些数据运行 N 次测试。
我如何利用转换?
@DataProvider(name = "loginData", parallel = false)
fun loginDataProvider(): MutableIterator<String> {
val loginTestData: ArrayList<String> = ["abc", "def", "xyz"]
return loginTestData.iterator()
}
@Test(dataProvider = "loginData")
fun funloginTest(loginDetails: String){
print("The value of $loginDetails")
}
如何为参数“def”运行此测试 4 次?
理想情况下,我想在每次从外部源(如 json)运行测试用例之前获取
invocationCount
,并对特定数据运行 N 次测试
我试着看了很多
invocationCount
和IAnnotationTransformer
,但找不到确切的答案。解决问题的任何想法或代码片段都可以在这里提供帮助
IAnnotationTransformer
在这种情况下似乎不起作用。
我建议改为修改 DataProvider 方法的行为。
{ "funloginTest" : { "def" : 4 } }
loginDataProvider
里面,我们可以通过测试方法名(参考DataProvider的文档)来查看哪些数据需要有不同的调用次数。class RepeatedRunTest {
// TODO read it from json
private val testToCaseInvocationCount = mapOf("funloginTest" to mapOf("def" to 4))
@DataProvider(name = "loginData", parallel = false)
fun loginDataProvider(testMethod: Method): MutableIterator<String> {
println(testMethod.name)
val loginTestData: Array<String> = arrayOf("abc", "def", "xyz")
return loginTestData.map { testData ->
List(
// repeat if needed
testToCaseInvocationCount
.getOrDefault(testMethod.name, emptyMap())
.getOrDefault(testData, 1)
) { testData }
}
.flatten().toMutableList().listIterator()
}
@Test(dataProvider = "loginData")
fun funloginTest(loginDetails: String) {
print("The value of $loginDetails")
}
}