java类里多个test_java – TestNG多次运行所有类方法,初步使用提供的数据执行@BeforeClass...

我正在使用TestNG和Selenium WebDriver为webapp编写测试套件.

我需要的是为不同的经过身份验证的用户多次运行测试类的所有方法(数据在运行时拉出:来自数据库).所以我需要将数据传递给具有数据提供者的类,该数据提供者提供所有用户的凭据,然后为每个用户创建一个Web驱动程序(为了实验的纯度)并使用@BeforeClass方法中提供的凭据进行身份验证,运行该类的所有@Test方法,并使@AfterClass拆除关闭Web驱动程序.

我怎样才能做到这一点?

Attempt1是在课堂上放置一个@Test(dataProvider =“getUsersIdAndName”).

它不起作用,因为事实证明,类上的@Test(dataProvider =)并不意味着应该使用提供的数据调用该类的所有方法.

结果是根本没有调用该方法,因为没有数据传递给它参数.我得到了奇怪的测试报告,其中此方法被标记为以0秒的执行时间通过. (这是在NetBeans中打开的Maven项目,如果这是有道理的.)

这个类上的@Test(dataProvider =)是否意味着什么?

Attempt2是在方法的@Test注释上添加dataProvider.

它不起作用,因为这意味着在单个类运行期间调用测试方法两次.

结果是,它第二次失败,因为它试图重复测试而web驱动程序没有重新初始化:浏览器已经呈现另一个页面.

第一次和第二次尝试的缺点是登录本身是在测试方法中完成而不是在@BeforeClass方法中完成,因为我知道无法用数据提供者的数据提供它.

Attempt3是一个绝望的尝试,将@BeforeClass和@Test结合在单一方法上.

它不起作用,因为如果带注释的方法有参数列表,@ BestClass也需要@Parameters.

结果是这个方法被调用了三次:由于上述原因,第一次作为类设置失败,而当成功时由于数据提供者而失败两次.

我还有两个关于如何归档相同效果的想法.

Idea4是在每个测试方法上放置一个@Test(dataProvider =),每个方法将自己执行一次身份验证和isAuthenticated()测试,然后执行它自己的测试.

无效和丑陋.

看起来最实惠的Idea5就是用@Test标记一种方法来聚合所有其他测试方法:它从数据提供者接收数据,由给定用户执行身份验证,然后运行isAuthenticated测试和所有其他必要的测试.在这种情况下,@ BeforeClass和@AfterClass只是设置和拆除Web驱动程序.这种方法的缺点是我失去了使用@BeforeMethod和@AfterMethod的能力,但这对我来说是可以承受的:看起来我不需要它们.

有没有更好的方法来存档相同的效果?

对不起,留言很长.

提前致谢.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值