接口测试 请问,testNG 里的数据源如何保证临时生成

cctodd · 2017年11月17日 · 最后由 cctodd 回复于 2017年12月05日 · 1801 次阅读

现在有这样一个需求,testNG 里的数据需要临时生成,但是测试过程发现 testNG 是将 DataProvider 里的数据一次性全部加载,然后对每一条用例再依次执行
比如
@DataProvider(name = "dataList")
public static Object[][] data(){
return new Object[][]{

{"caseA", "param1", "param2", param3"", "XX"}
{"caseB", "param1", "param2", param3"", "XX"}
{"caseC", "param1", "param2", param3"", "XX"}
}

其中 XX 为动态参数,需要保证时效性,需要临时调函数生成,但不是每条用例都需要 XX,所以不好再@Test方法里去调用,最好在数据源里写。
但是 testNG 貌似是一次性将 data 全部加载,这样用例很多的时候,后面的用例拿到的 XX 参数已经失效了

请问:
有没有什么比较好的解决方案呢,附:数据源没有规律,不能用 iterator 生成。

共收到 3 条回复 时间 点赞

额 你在数据源里拿一个标识来判断是否需要 XXX 然后根据这个标识决定在测试方法里是否调用临时函数生成 XX 可行不..

testng 是一次性加载所有的参数的,原因是为了提前维护好每个测试方法的上下文,多线程跑的时候,不会出乱子。

你这个问题,其实就已经不适合用数据驱动了。基本无解。

无为 回复

谢谢,我想想其他办法

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册