【发布时间】:2009-04-30 00:20:27
【问题描述】:
我想知道人们目前如何为他们的 WatiN/Wartir 测试重置数据/清理测试残留?
例如,假设有一个将用户添加到系统的测试,并且用户名必须是唯一的。显然,没有任何用户的第一次运行应该可以正常运行,但是如果没有人工干预,第二次运行就会失败。
【问题讨论】:
标签: integration-testing watin watir functional-testing
我想知道人们目前如何为他们的 WatiN/Wartir 测试重置数据/清理测试残留?
例如,假设有一个将用户添加到系统的测试,并且用户名必须是唯一的。显然,没有任何用户的第一次运行应该可以正常运行,但是如果没有人工干预,第二次运行就会失败。
【问题讨论】:
标签: integration-testing watin watir functional-testing
您可以为此采取一些策略,我假设您正在使用 WatiN、Nunit 或 VS 单元测试来运行您的测试。
使用交易 单元测试时使用的一种方法是将整个测试“包装”在事务中,并在测试完成时回滚事务。在 .net 中,您可以为此使用 System.Transactions。
构建“存根页面” 在您的应用程序中构建一个页面,该页面使用现有的业务逻辑来删除您的数据。这个页面需要得到保护,理想情况下甚至不需要部署到生产环境中。 这是我推荐的方法。
调用网络服务 开发一个 Web 服务,或者直接从应用程序的应用层调用一个来执行删除。您可能还需要开发它。
直接清理 在您的测试代码中构建一些类来访问数据并进行清理。
使用其中任何一种,您都需要在运行测试之前和之后进行清理,即在测试设置和测试清理方法中。这样做两次的原因是您应该假设您的测试失败并且没有正确清理。
使用 Linq to Sql AFAIK 如果您使用的是 Linq to sql,它会在内存中工作并自动为您将整个更新包装在事务中。如果您根本不调用 SubmitChanges();方法那么你应该没问题,但我自己没有测试过。
【讨论】:
我已要求开发人员制作一个将重置数据库的脚本。经过一系列测试后,我只需调用该脚本并从干净的数据库开始。
【讨论】:
Mike - 您的问题并非 Watir/WatiN 独有。它适用于任何 UI 测试,因此请搜索 Selenium、Windmill 甚至无头集成测试(HtmlUnit、API 测试等)的类似解决方案。我已经在 StackOverflow 上亲自回答过这个问题几次。
【讨论】:
WatiN 用于 UI 测试。
为了测试您正在寻找的场景,您可以使用 c# 代码生成用户 ID,使其独一无二(与创建测试时的存储方式相反)。
【讨论】: