Satchmo单元测试仅在隔离状态下运行

时间:2012-01-12 21:15:43

标签: python django satchmo

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

但是,其中一项测试只能单独使用,确切地说是custom.ShopTest.test_custom_product中的product/modules/custom/tests.py。此测试单独工作(即使用./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: 我刚刚发现,当我在请求的视图函数中放置一个断点时,测试并不总是发生,并且在调试器在断点处停止时继续等待一段时间。也许这与线程有关?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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