比如用 testng,每个用例执行后,需要断言某个数据,但是这个数据有延迟,可能 10 分钟后才会生成
那总不能每个用例都在干等?有没有什么办法让别的用例先执行,回头再查询这个数据?
可以用多线程执行用例,单独开一个线程跑这个用例。但是对于你这个异步查询用例所在的线程来说 还是阻塞的。
如果所有用例都是你说的这种要等 10 分钟才能进行断言的情况,似乎也没有想到有更好的办法
分成两份 job 呗,第一个 job 是发起,等十分钟后第二个 job 去逐个验证。只要中间把对应数据的关联信息建立起来就好。
把时间往前改 10 分钟
pytest 可以用 pytest-xdist 并发执行用例,testng 应该也有类似方法
用例拆成两个部分,一个是触发数据的生成,另一个是校验生成后的数据?
不过可以的话,建议还是看下是否可以加速。每次重新测试都要等待 10 分钟时间还是挺久的。
我还遇到过隔日再去验证的,需要将用例拆分成 2 份,测试过后就锁住,等待校验
改成几秒后生成。实在不行建议拆分,单独对这种进行验证。
可以给所有测试用例加逻辑判断是否需要执行或者等待断言,我是使用装饰器的形式:
这一行代码: DataReport.TEST_STATUS[current_func] = True 代表已经完成测试,
直到满足断言条件并完成断言后才会释放。
在 afterclass 中判断如果测试用例(数据统计)行为都已经完成后会进入到待验证的阶段:
然后有一条用例专门去做断言:
验证完成后又会在 afterclass 中将初始变量重制,开启下一轮循环。
(os:其实我也不想这么实现,奈何测试组长一定要当日手动完成行为,隔日 8 点去验证昨天的行为是否被系统统计到)