【问题标题】:WatiN test data reset/clean upWatiN 测试数据重置/清理
【发布时间】:2009-04-30 00:20:27
【问题描述】:

我想知道人们目前如何为他们的 WatiN/Wartir 测试重置数据/清理测试残留?

例如,假设有一个将用户添加到系统的测试,并且用户名必须是唯一的。显然,没有任何用户的第一次运行应该可以正常运行,但是如果没有人工干预,第二次运行就会失败。

【问题讨论】:

    标签: integration-testing watin watir functional-testing


    【解决方案1】:

    您可以为此采取一些策略,我假设您正在使用 WatiN、Nunit 或 VS 单元测试来运行您的测试。

    使用交易 单元测试时使用的一种方法是将整个测试“包装”在事务中,并在测试完成时回滚事务。在 .net 中,您可以为此使用 System.Transactions。

    构建“存根页面” 在您的应用程序中构建一个页面,该页面使用现有的业务逻辑来删除您的数据。这个页面需要得到保护,理想情况下甚至不需要部署到生产环境中。 这是我推荐的方法。

    调用网络服务 开发一个 Web 服务,或者直接从应用程序的应用层调用一个来执行删除。您可能还需要开发它。

    直接清理 在您的测试代码中构建一些类来访问数据并进行清理。

    使用其中任何一种,您都需要在运行测试之前和之后进行清理,即在测试设置和测试清理方法中。这样做两次的原因是您应该假设您的测试失败并且没有正确清理。

    使用 Linq to Sql AFAIK 如果您使用的是 Linq to sql,它会在内存中工作并自动为您将整个更新包装在事务中。如果您根本不调用 SubmitChanges();方法那么你应该没问题,但我自己没有测试过。

    【讨论】:

    • 在 LinqToSql 中进行事务提交时如何使用 System.Transations?
    【解决方案2】:

    我已要求开发人员制作一个将重置数据库的脚本。经过一系列测试后,我只需调用该脚本并从干净的数据库开始。

    【讨论】:

      【解决方案3】:

      Mike - 您的问题并非 Watir/WatiN 独有。它适用于任何 UI 测试,因此请搜索 Selenium、Windmill 甚至无头集成测试(HtmlUnit、API 测试等)的类似解决方案。我已经在 StackOverflow 上亲自回答过这个问题几次。

      【讨论】:

      • 您能否在 SO 中添加指向您的答案的链接?
      【解决方案4】:

      WatiN 用于 UI 测试。

      为了测试您正在寻找的场景,您可以使用 c# 代码生成用户 ID,使其独一无二(与创建测试时的存储方式相反)。

      【讨论】:

      • 我知道 WatiN 用于 UI 自动化测试,但它对于我们尝试使用它的功能测试也很有用。不幸的是,这已经是我们正在做的事情。问题是它不是很优雅,并且可能会不时随机失败,并且测试数据库会在一段时间后膨胀。我真正在寻找的是一个事务性解决方案,其中数据可以在测试后回滚。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-25
      • 2016-04-22
      相关资源
      最近更新 更多