【问题标题】:Do I have to create my test database entries in each TestCase?我必须在每个 TestCase 中创建我的测试数据库条目吗?
【发布时间】:2015-09-22 04:40:14
【问题描述】:

我有一个电子商务应用程序,其中有productordercheckout 等子应用程序。在每个应用程序中,我都有一个 tests.py 文件,其中包含对应用程序隔离部分的测试。

许多不同的测试用例/子应用使用相同类型的数据。例如,product-tests、order-tests 和 checkout-tests 都需要有产品、购物车、货币等的样本数据。

目前我正在每个TestCasesetUp 函数中创建此测试数据。但这意味着我一遍又一遍地创建相同的数据,这看起来非常愚蠢和不必要。

我有什么方法可以为我的测试数据库创建“全局”测试数据吗?在运行任何 TestCase 之前,将首先创建它吗?还是我已经在做“正确”的方式,即使它看起来很糟糕?

我正在使用 Django,它使用的是 unittest python 模块。

【问题讨论】:

    标签: python django unit-testing testing


    【解决方案1】:

    在我看来,单元测试应该尽可能地与其他单元测试隔离。否则,更改测试运行的顺序可能会导致之前通过的测试失败(反之亦然)。因此,我建议您在每次测试之前继续设置和拆除数据库。根据我的经验,您通常只需要为每个测试设置几个项目——并且相同的设置代码通常可以被多个测试共享(例如,通过将该代码放入基类的 setUp 方法中)。

    当然,提前进行设置(用于多个测试)是有争议的——例如在setUpClass 方法甚至setUpModule... 主要论点是它可能会在运行测试时节省一点时间——这对我来说从来都不是问题,因为我的测试一直都不足以在第二或第二——对我来说,Grokking 输出比运行测试花费的时间要长得多,所以我从不担心太多。另一个优点是您可以获得一个更“类似于生产”的环境——但通常,如果您的代码足够独立,可以轻松进行单元测试,那可能没什么大不了的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多