我知道在测试完成后,有很多关于清理数据的问题。他们中的很多人都说要模拟数据库以避免使用真正的数据库,然后在测试完成后再清理它。我不确定这是否适用于我正在做的事情。
我正在使用SpecFlow for .net,使用Selenium作为WebUI,使用NUnit作为测试运行器。
应用程序本身是一个大型的多页面Web应用程序。
SpecFlow功能由页面功能分隔,大多数(如果不是全部)页面都有一个显示已创建记录的表格。防爆。我创建了一个新类别,页面在表格中显示添加的类别。为了能够反复运行这些测试,我需要删除测试从数据库创建的所有添加记录,以便在测试获得重新创建时重新创建相同的类别。
我们有一个框架设置,可以在每个要在存储过程中传递的功能之后运行,以从数据库中删除这些添加的记录。由于存在在测试环境中删除不同测试客户端的记录的风险,因此对该想法进行了大量推动。
所以,我的问题是,清理数据库的最佳做法是什么?
答案 0 :(得分:1)
最好在测试运行之前和之后删除测试数据。这样,即使测试中途中止并且之后也没有清理,数据也会被清理干净。
在specflow中,这可以通过在场景之前/之后/功能/之后功能挂钩之前使用来实现。
如果可能,理想的解决方案是为每个测试创建一个新数据库,然后您就可以删除整个数据库。这将允许测试并行运行。
如果你不能这样做,那么你想要一些方法来为每个测试唯一地识别测试数据。
令人担心的是,您的问题意味着同一数据库中的测试和实时数据