问题标签 [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 投票
0 回答
271 浏览

django - 使用 celery 依赖和 django-nose 在 django 中构建测试用例

我一直在尝试为我在 django 项目中所做的事情构建测试用例。在项目中,很少有 celery 任务在信号时执行(pre_save,post_delete..etc)

我也一直使用 django-nose 作为我的 test_runner,所以为了让它一起工作,我做了我自己的跑步者并继承了这两个类

我还更新了我TEST_RUNNER使用上面的类,下面是我的 celery.py conf,它在我的 settings.py 中导入

此时奇怪的是,当我为特定应用程序运行测试用例时,它成功执行而没有任何问题

但是当我为所有应用程序运行时,对于所有依赖 celery 任务返回值的任务,我都会收到错误,即使 result.successful() 总是返回 false

0 投票
1 回答
586 浏览

python - Why does my Django factory function create models in local DB, not test DB?

I have some tests in my Django project that needs to create a few models and save them to the DB. I extracted the instance-creating code into some "factory" functions that lives in a separate module (.py file), helping me to quickly create sets of related models etc (hence the object.create() stuff). These functions are very simple and look something like this:

When I run the tests, the tests that call this functionality (inside django's TestCase class) save their model instances to my local dev DB (as specified in my local settings file), not the automatically created temporary test DB.

Tests look something like this:

My understanding was that the whole environment is bootstrapped using the test environment settings, but this specific case seems to not work that way. Other tests use the test DB just fine.

What am I missing here?

Details:

  • Django 1.6

  • Running tests using django-nose

0 投票
1 回答
299 浏览

python - Django 鼻子测试顺序

我正在使用带有 django-nose 的鼻子进行测试

但是,我在以一种聪明的方式订购我的测试时遇到了麻烦

据说鼻子按字母顺序执行测试,但是,我不是这种情况。无论我做什么(更改我的代码顺序、函数名称、清除编译文件).. 测试运行者选择相同的顺序。

我当然可以将这个大测试分成我会调用的函数,但我相信有更好的方法

我错过了什么?有没有人面临同样的问题?


附带信息:我正在测试一系列〜10个动作,所以我会反对 - 特别是在我的情况下 - 反对“测试隔离”;在我看来,必须为每个测试重写过去的操作并不是最聪明的,也不是最省时的……这就是执行顺序应该到位的地方。

我知道这个A Nose 插件用于指定单元测试执行的顺序,但我无法正确“设置”鼻子插件,功能命名答案也不起作用

确实谢谢你

0 投票
2 回答
971 浏览

python - 单元测试中的代码可重用性?

我一直听到人们说测试应该如何简单、可维护、直接,但是单元测试中的代码可重用性会发生什么?

让我们举个例子:

将来自两个测试的重复代码封装在一个包含必要断言的函数中不是最好吗?

我和一些程序员就这个问题争论过,他们不同意,他们说测试应该是愚蠢的,代码的可重用性在这里不好。这样做的原因是因为在 django 控制台中不是很清楚断言实际失败的位置,因为断言在函数中,尽管我不同意,因为与鼻子一起使用它会给你测试的名称和回溯,虽然伙计们再次不同意,指出可以在没有鼻子的情况下单独调用测试(因此你看不到所有这些细节)。

你们有什么感想?

  • 在单元测试中使用代码可重用性好不好?
  • 如果可以/必须使用可重用性,那么如何克服关于精确定位断言的其他问题?
0 投票
5 回答
8250 浏览

python - 如何使用 Django + Nose 正确测试覆盖率

目前有一个项目配置为通过 Django 的管理命令运行覆盖,如下所示:

这会生成如下报告:

然而,这份报告有一个问题。这是错的。覆盖是标记线缺失,尽管它们确实被测试覆盖。例如,如果我通过nosetests而不是 django 的 manage 命令运行测试,我会得到以下正确的报告:

谷歌把我带到了覆盖网站的常见问题解答,http://nedbatchelder.com/code/coverage/faq.html

问:为什么函数(或类)的主体显示为已执行,但 def 行没有?

发生这种情况是因为在定义函数之后才开始覆盖。定义行在没有覆盖测量的情况下执行,然后开始覆盖,然后调用函数。这意味着身体被测量,但功能本身的定义不是。

要解决此问题,请尽早开始报道。如果你使用命令行来运行你的程序,那么你的整个程序都会被监控。如果您使用 API,则需要在导入定义您的函数的模块之前调用 coverage.start()。

问题是,我可以通过 Django 的管理命令正确运行覆盖率报告吗?或者我是否必须绕过管理以避免在执行“缺失”行后开始覆盖的情况?

0 投票
1 回答
545 浏览

python - coverage.py 不适用于相对导入?

我正在为我的 django 应用程序收集代码覆盖率,如果模块是相对导入的,我看起来coverage.py不会收集统计信息。

更详细:

目录结构如下所示:

因此,如果我这样做from .my_module import *-tests.py那么coverage.py将不会收集my_module.py. 但是,如果我输入from apps.my_app.my_module import *,统计信息就在那里。

我正在使用带有插件的 django-nose并且在运行测试时有标志。coverage--cover-package=apps.my_app

有没有人偶然发现这样的?我真的不想总是拥有完整的导入路径,除非我真的必须这样做,所以任何想法都值得赞赏。

0 投票
0 回答
602 浏览

python - 一起运行所有 django-nose 测试时未注入模拟类

我遇到了一个奇怪的问题,这似乎来自 python 单元测试如何管理它们的导入以及这与模拟包的关系。这是一个 django 项目,使用 django-nose/nose 进行单元测试运行和 mock 进行模拟。

我有一个使用模拟的单元测试,单独运行时效果很好(python manage.py test tests/test_code.py)

在 test_code.py 中:

在 bookstore.py 里面:

但是,当我将此测试作为整个测试套件的一部分(python manage.py test)运行时,测试会失败,因为 bookstore.py 代码没有注入模拟类并回退到 BookProxy 的实际代码。

因此,当所有测试一起运行时,似乎有一些状态正在发生,但我无法弄清楚是什么导致模拟注入失败。其他使用模拟的单元测试似乎都在自行清理(使用装饰器、上下文或我在这里展示的显式补丁对象方法)。

以前见过这样的东西吗?

0 投票
2 回答
1103 浏览

python - 在 Django 1.7 中进行测试会引发警告: RemovedInDjango18Warning

当我使用 Django 1.7.1 进行测试时,它会引发下一个警告:

我还尝试在 settings.py 文件中添加这一行:

但仍然抛出警告。

我从我的测试模型文件中记下代码:

我已经阅读了 Django 网页上的文档:https ://docs.djangoproject.com/en/1.7/topics/testing/overview/但仍然无法获得解决方案。

我正在使用 Django 鼻子。

我该如何解决这个问题?

谢谢

0 投票
1 回答
683 浏览

python - django 1.7:加载测试的初始夹具时出现问题

环境:

Django 版本:1.7.1
鼻子版本:1.3.4
django-nose 版本:1.2

我有两个应用程序:
狗和人类

该模型具有:

人类

并且在模型中有一个类似于人类示例属性的函数,比如

这两个应用程序在设置文件中的 INSTALLED_APPS 中列出。

FIXURE_DIRS 如下:

测试在狗应用程序的测试文件夹中。

我在狗应用程序中有一个测试来测试 askFood 功能,并且我有一个带有人类的 JSON 固定装置(initial_data)。

测试是:

我执行命令进行测试:

有一个错误:

显然它没有同步所有的应用程序,它只创建狗的桌子,当夹具运行时它找不到人类桌子。如何强制测试为所有应用程序创建模型?

在此先感谢您的帮助 :)

[编辑]

我更改了标题并发布了一个答案,也许可以帮助遇到同样问题的人。

问题不在于同步不会创建所有表,错误消息具有误导性。问题在于 django 1.7 不再支持的初始数据夹具。

0 投票
1 回答
184 浏览

django - django-nose:无法使用 --failed 查看自定义用户模型

我正在用鼻子运行测试,并想利用 --failed 标志。但是,一旦我添加它,我就会收到与用户相关的模型这样的错误:

套餐:

我究竟做错了什么?

更新:我没有在我的主分支上看到这个问题。在新分支中,我开始使用 django-tenant-schemas 中的 TenantTestCase 类。可能是问题的原因。

我得到的回溯: