在我的自动化测试中,我想使用@DataProvider来执行一些数据库更新,以保证我将要测试的数据的状态,以及2.)返回测试数据将在这样的环境中工作。
我发现更新是在@DataProvider主体中成功完成的,然后我的测试中的更新成功,所有断言都通过,然后回滚测试更新。但是,@DataProvider更新不会回滚,并在测试完成后保留。
有没有办法回滚在@DataProvider主体内部进行的数据库更新?
答案 0 :(得分:0)
你的问题与How to delete data only after all tests, based on inputs from data provider, are run?
相似它的答案适用于你。
<强>更新强>
在你的情况下,@DataProvider
是一个糟糕的选择。在TestNG中,您只能使用@DataProvider
提供的结果,并且它们在套件之前运行。您有几种方法可以解决您的问题。
@DataProvider
结果相关联的侦听器。它必须实现ITestListener
。在每个测试完成事件中,您的监听器将回滚所需的事务。@DataProvider
对数据库不执行任何操作,它只提供一些输入,应由@BeforeMehtod
和@AfterMethod
处理,更新和回滚分别。在这种情况下,所有上下文都可以存储在特定的测试类中。