Junit/TestNg 有没有可能在 suite 上进行数据驱动

jacky · 2022年02月17日 · 最后由 jacky 回复于 2022年02月21日 · 3780 次阅读

有个业务场景:
写了 100 个 UI 自动化的用例,需要验证 10 个权限的用户执行这些用例是否有问题

目前想到的做法是把 10 个权限放到文件里,每个测试用例指定@Test(dataProvider="xx") 来做数据驱动,这样做需要修改 1000 次权限,开销很大

有没有可能修改一次权限后 执行这 100 个用例,把数据驱动放到测试集里做,这样只需要修改 10 次权限,每次权限执行这 100 个用例

拜谢各位了!

共收到 7 条回复 时间 点赞

数据驱动,把测试数据放到数据库里,设计好对应数据期望值,然后一个循环,只需维护测试数据就可以了

没怎么看明白,ABC 不就三条测试数据吗,跟 suite 有啥关系

没有可能,Junit/TestNg 设计如此

换个思路,在@Before里产生修改数据后 作为 dataProvider

我确认下我的理解,假设 DataProvider 产生 A、B、C 三个账号数据,你是想把执行顺序从:

用例1:A
用例1:B
用例1:C
用例2:A
...

改为

用例1:A
用例2:A
用例3:A
...
用例100: A
用例1:B
用例2:B
...

对吗?

如果是,那其实你要做的并不是数据驱动,而是执行顺序编排。这个可以用 testng.xml 来做。建立 10 个 testsuite,每个 suite 里面都是你那 100 条用例,然后每个 testsuite 里面设定不同的 parameter 对应不同用户,testcase 里面通过 @Parameter 来获取当前 suite 对应的用户信息即可。

如果不是,可以类似上面示例这样说清楚你想要达到的效果?

陈恒捷 回复

正解,感谢

目前是这样做的:

现在才知道 @BfterTest 不是单个测试方法执行之前执行,而是 xml 里的 test 标签

jacky 关闭了讨论 02月21日 10:30
jacky 重新开启了讨论 02月21日 10:30
jacky 关闭了讨论 02月22日 15:49
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册