问题标签 [django-nose]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
10294 浏览

python - Django ORM - 模拟 values().filter() 链

我试图模拟 Djangosmodel.Manager()类的链式调用。现在我想模拟values()andfilter()方法。

为了测试我创建了一个小测试项目:

  1. 创建虚拟环境
  2. pip install django mock mock-django nose django-nose
  3. 创建项目django-admin.py startproject mocktest
  4. 创建应用manage.py startapp mockme
  5. 添加django_nosemocktest.mockmeINSTALLED_APPS(settings.py)
  6. 添加TEST_RUNNER = 'django_nose.NoseTestSuiteRunner'到 settings.py

为了验证一切都设置正确,我跑了manage.py test。运行一项测试,这是 Django 在您创建应用程序时创建的标准测试。

接下来我要做的是创建一个非常简单的模型。

模拟/模型.py

接下来我做的是创建一个简单的函数,它使用MyModel. 这就是我稍后要测试的功能。

模拟/functions.py

这里没有什么特别的事情发生。该函数正在过滤 MyModel 对象以查找name='Frank'. 对 values() 的调用将返回一个ValuesQuerySet仅包含所有找到的 MyModel 实例的名称字段。

模拟/测试.py

第一个 assertEquals 将评估为成功。由于模型管理器尚未模拟,因此没有返回任何实例。当第二个 assertEquals 被调用时,我希望result包含我作为返回值添加到 QuerySetMock 的 MyModel 实例:

我嘲笑了filter()方法而不是values()方法,因为我发现它将是最后一次评估的调用,尽管我不确定。

测试将失败,因为第二个结果变量不包含任何 MyModel 实例。

为了确保该filter()方法真的被嘲笑,我添加了一个“调试打印”语句:

返回:

我究竟做错了什么?

0 投票
0 回答
139 浏览

python - 即使有零测试,django-nose 也需要 15 秒

我正在使用 django-noseREUSE_DB=1并禁用了我的所有测试,只是为了查看它所需的设置时间。

整个过程的实际时间平均为 15 秒。

我的明显猜测是 mysql 数据库,所以我查看了日志,发现鼻子正在运行一些ALTER TABLE查询。我的日志:

查看日志,即使不是每次都创建数据库,它似乎也花费了太多时间。这完全正常吗?

我的设置:带有 mysql 5.5、django 1.3.1 的 OSX lion。

0 投票
2 回答
722 浏览

django - Django 使用nose、django-nose 和selenium 测试冻结

我正在尝试测试我的 django 项目,我有一个具有非常经典布局的应用程序,如下所示:

在 manage.py 的父目录中使用 manage.py (根据 django 1.4 新布局)。

在 tests/__init__.py 我有类似的东西:

在 tests/models.py 我有经典的 python 测试(工作得很好),在 tests/views.py 我有硒测试。

现在当我这样做时:

硒测试工作没有任何问题(他们现在失败了,但我正在努力)。但是当我这样做时:

一些常规测试正常启动,但在某些时候,firefox 启动,一切都冻结了,没有更多测试启动,firefox 和终端都没有发生任何事情。

我要补充一点,我的常规测试来自 unittest.TestCase(不是 django.test.TestCase),我的 selenium 测试来自 django.test.LiveServerTestCase,并且我使用的是 django 1.4.0、nose 1.2.1、django -鼻子 1.1 和硒 2.26.0。

有什么线索吗?

0 投票
1 回答
684 浏览

django - 为什么 Django 鼻子测试需要 --exe?

为什么我在运行 django-nose 测试时必须使用 --exe 参数。如果我不使用它,它将跳过测试运行

例如

而我的测试在正确的地方等。

以详细程度 3 运行它显示:

它显示:(更改了路径名称,但无论如何,鼻子找到它们但跳过它们!!)

运行测试的唯一方法是使用 --exe 参数

我在用:

  • Ubuntu(10.4 或 11.4 都无所谓)
  • Python 2.6 和 2.7
  • Django 1.4.3

这是为什么?

根据你不需要的文件--exe

但经过一段时间的困惑......并谷歌搜索并查看这里,我得到了这个建议。

看到鼻子没有找到 Django 测试

鼻子无法在 ubuntu 中找到测试

但是对于这种似乎是错误的解决方法的解释无处可寻?

还是我错过了什么?

我提出这个要求,因为其他问题都很老了,没有找到令人满意的答案......

0 投票
1 回答
1022 浏览

python - 如何清理在 django-nose 测试函数中所做的数据库更改?

出于各种原因,我们使用鼻子功能测试来编写我们的测试套件。

在为我们的 Django 应用程序运行测试套件时,我们希望避免从这些测试中泄漏任何数据(如django.test.TestCase),因为这会导致耦合并且难以诊断故障。

解决这个问题最明显的方法是一个装饰器,我们可以将它包裹起来,然后我们想要清理的测试,但如果一个不同的解决方案可以得到我们想要的东西,我不会结婚。

我们在 PostgreSQL 上运行,因此特定于 Postgres 的解决方案会很好。

0 投票
3 回答
1015 浏览

django - 一起使用 django-nose 和 django-celery -- 单元测试

我有一个使用django-nose的 django 项目。我想将django-celery添加到项目中。我使用单元测试。django-nose 和 django-celery 都需要在我的 settings.py 文件中设置 TEST_RUNNER 。具体来说:

对于 django-nose 和:

对于 django 芹菜。

我应该如何处理这个问题以便我可以使用这两个包?

0 投票
1 回答
462 浏览

django - 带有 django-nose 的 Django:两个相同的设置文件,在运行测试命令时具有不同的行为

对于 Django 1.4.5,我使用的是 django-nose 1.1.0。

我有两个没有差异的设置文件。

我运行测试:

我得到

从不同位置运行相同的相同设置

测试在没有全部运行的情况下保释:

我得到了一个回溯,DatabaseError: no such table: django_content_type 回溯来自于 url 的加载。在那里实例化的东西调用ContentType.objects.get_for_model(self.model). 当设置相同时,这种差异怎么可能?

我的 manage.py 文件是通用的:

0 投票
3 回答
7380 浏览

django - Django(鼻子)测试加速,reuse_db不起作用

我正在使用 django-nose 在 django (1.4) 中运行我的单元测试。

创建数据库需要很长时间。

所以我发现把它放在settings.py中:

应该做的伎俩。

实际上 django itsellve 给出了这个建议:

当然,您需要使用此标志 =0 运行一次(或在每次数据库更改后)

但是,当您将标志设置为 0 时,我的测试以以下备注结束:

所以当我想重用运行它时......没有什么可以重用......我会收到错误说该表不存在

将reuse_db设置为0时测试运行完美

我在我的开发设置中使用测试数据库别名:

我没有使用内存中的 sqllite 数据库进行测试,因为我在某处读到这不适用于 django-nose。

那么,当它最终破坏数据库时,我该如何重用数据库......

根据这个https://docs.djangoproject.com/en/1.4/topics/testing/#the-test-database django 正在这样做,但它没有显示如何防止这种情况(如果可以的话),或者如何使用reuse_db 选项。我应该使用其他设置吗?

0 投票
0 回答
128 浏览

django - 配置不当:静态文件视图只能在调试模式下使用,或者如果使用了 'runserver' 的 --insecure 选项

我越来越:

配置不当:静态文件视图只能在调试模式下使用,或者如果使用了 'runserver' 的 --insecure 选项

当我尝试运行测试时。我知道我必须提供静态文件,但我的问题是,由于 LiveServerTestCase 默认使用 8081,提供这些文件的最佳方法是什么?

任何其他信息请告诉我:)

提前致谢!

0 投票
0 回答
161 浏览

django - 有没有办法告诉 django-nose 处理多个数据库?

(在这里交叉发布:https ://github.com/jbalogh/django-nose/issues/129 )

在 settings.py 我列出了两个数据库:

如果我在没有 REUSE_DB 的情况下运行测试,它们会工作,但速度很慢(仅在创建/销毁数据库上花费了近 2 分钟):

但这失败了:

这是有道理的,因为 tblMfg 在 UMC 数据库中,而不是在 OST_DEV_1 中。有没有办法告诉 django-nose 在哪里可以找到 tblMfg?请注意,我的测试本身不引用 tblMfg ——我现在坚持使用 1+1 == 2。

我们目前对 UMC 中的表手动使用“使用”: