【问题标题】:Satchmo unit test runs only in isolationSatchmo 单元测试仅单独运行
【发布时间】:2012-01-12 21:15:43
【问题描述】:

我正在使用 Satchmo 购物车软件处理一个 Django 项目。我必须为这个项目使用相当复杂的自定义代码,因此希望所有 Django 和 Satchmo 测试都能通过。

但是,其中一项测试只能单独运行,准确地说是product/modules/custom/tests.py 中的custom.ShopTest.test_custom_product。此测试单独运行(即使用./manage.py test custom.ShopTest),但当我一起运行所有测试时(./manage.py test)。

此测试使用 Django 测试客户端打开主页,并断言页面中是否包含某些文本。当我在生产数据库中加载相同的夹具时,这些文本也在页面上。

另外,当测试开始时,应该在页面上显示标题的产品也确实存在于测试数据库中,因此夹具加载正确。

我认为其他一些 Satchmo 应用程序以某种方式破坏了测试,但我一直认为 Django 会尽可能多地单独运行测试。

编辑:

失败测试的输出是:

======================================================================
FAIL: test_custom_product (product.modules.custom.tests.ShopTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/data/Projects/satchmo/satchmo/apps/product/modules/custom/tests.py", line 43, in test_custom_product
    self.assertContains(response, "Computer", count=1)
  File "/data/PythonEnvironments/mywebsite.nl/local/lib/python2.7/site-packages/django/test/testcases.py", line 427, in assertContains
    " (expected %d)" % (real_count, text, count))
AssertionError: Found 0 instances of 'Computer' in response (expected 1)

----------------------------------------------------------------------

编辑 2: 我刚刚发现,当我在请求的视图函数中放置断点时,测试并不总是发生,并在调试器在断点处停止时等待一段时间再继续。也许这与线程有关?

【问题讨论】:

  • 失败测试的输出会有帮助。
  • 我已经添加了输出。

标签: python django satchmo


【解决方案1】:

在 Satchmo 中已修复:2011 年 5 月在 livesettings 中添加了对轻松重置 livesettings 的支持。目前我没有发现任何使用最新软件包的失败测试。测试用例类 ShopClass 长期未修改。

【讨论】:

    【解决方案2】:

    我终于自己找到了解决方案。它必须对缓存做一些事情。使用虚拟缓存确实解决了这个特定问题,但随后另一个单元测试将失败(testCacheGetOK 来自keyedcache)。但是,在测试期间将缓存超时设置为一秒解决了这个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-29
      • 1970-01-01
      • 2016-11-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多