方法#1:每次测试前登录: 优点: 每个测试都是一个不同的会话,如果一个测试导致浏览器崩溃,那么只有该测试失败并且它不会影响其他测试. 可以进行并行测试. 缺点: 如果登录失败
优点:
>每个测试都是一个不同的会话,如果一个测试导致浏览器崩溃,那么只有该测试失败并且它不会影响其他测试.
>可以进行并行测试.
缺点:
>如果登录失败(因为AUT已关闭或登录功能有错误),我们仍会在每次测试之前调用它.但这是一个小问题,因为这可以通过创建测试登录功能的测试来修复,如果失败则可以中止整个套件.
APRROACH#2:登录一次并运行所有测试:
优点:
>您不必处理如此多的浏览器窗口,因为您只需打开一个窗口
缺点:
>如果测试导致浏览器崩溃,我们可以在下一次测试开始之前恢复吗?
>我们可以并行运行多个测试吗?
虽然这两种方法各有利弊,但我仍然不确定哪种方法最好.在每次测试之前作为单独的会话登录真的是浪费资源吗?没有涉及DB连接.我在APPROACH#1中看到的唯一潜在问题是,由于每个测试都是一个Java进程,因此有可能使系统过多地同时进行Java进程.
答案是,你决定.但是,这是我的意见:
由于UI测试是测试世界中最模糊的,所以@BeforeSuite风险太大而且不太现实.登录过程失败有千种不同的原因.特别是如果您从CI服务器或通过其他一些自动化过程自动运行这些测试,您的完整测试套件将无法执行.
@BeforeTest过于冗余我相信即使有时你只需要刷新环境并回到已知状态.除了这些情况,我也不会这样做.
到目前为止,据我所知@BeforeClass是最好的方法.因为,每个测试类只运行一次并登录一次并执行所有测试.您可以将@BeforeTest与此结合使用,只是为了将环境重置为已知状态,以便其他测试知道从哪里开始
