问题标签 [django-unittest]

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 投票
1 回答
122 浏览

python - How do you find the form name in a Django unittest?

How do you find what Django name's a form within its context, so that you can assert tests on the form?

I have a simple unittest like:

Django's unittest framework provides methods to specifically test form fields...but they all require a form name. However, when testing admin views, these are auto-generated, so I don't know them, much less can I hard-code them inside a unittest.

How do I find this name? Attempting to print response.context shows an enormous amount of data, so I'm not sure where to start.

0 投票
2 回答
1534 浏览

django - 测试需要使用 Factory Boy 进行用户身份验证的 Django 视图

我需要一个允许员工用户查看处于草稿状态的对象的视图。但我发现很难为这个视图编写单元测试。

我正在使用 Factory Boy 进行设置:

鉴于我现在有一个已登录的员工用户进行测试,我该如何使用它来测试视图(status_code 200 而不是 404)?

例如,当我的视图允许具有is_staffas True 的用户访问视图时,此测试失败 (404 != 200):

0 投票
0 回答
68 浏览

python - 如何在 Django 单元测试中注册自定义管理命令

如何注册仅存在于单元测试中的自定义 Django 管理命令?

在 Django 1.5 中,您可以这样做:

但是,在 Django 1.8 中,_commands不再存在。查看代码,似乎这些现在是通过 django.core.management.get_commands 动态检索的,但我没有看到添加或注册任意命令类的方法。这可能吗?

0 投票
1 回答
704 浏览

django - 休息框架权限测试

我正在使用最新的 django-rest-framework 并想创建一些测试。我有一个 ModelViewSet 和一个访问request.GET. 这一切都很好,但在我的单元测试中,GET 字典是空的。这是我的代码:

这一切都在可浏览的 api 中按预期工作。但现在我写了一个单元测试:

在这里我得到一个例外:

request.GET在调试时,我意识到has_permission. 有谁知道为什么这在“生产”中起作用但在单元测试中不起作用?

0 投票
0 回答
83 浏览

python - Django 单元测试:我可以指定默认标签/位置吗?

我知道当我跑步时

然后它将test*.py在当前工作目录下的任何文件中发现测试。

我也知道我可以像这样指定一个测试标签:

然后animals.tests将运行模块中的所有测试。

另一种选择是指定这样的目录:

animals/然后将发现并运行目录中的所有测试。(上面的例子来自文档。)

我想知道是否有办法指定要测试的默认测试标签或用于测试发现的目录。

假设我想在animals/默认情况下在目录中运行测试(即,如果未另行指定)。那么以下两个命令将是相等的:

虽然我仍然希望能够像这样运行另一个测试:

谢谢你。

PS我知道我可以重新定义test管理命令,但我宁愿避免这样做。我正在寻找更清洁的解决方案 - 例如配置选项等。

0 投票
3 回答
3185 浏览

python - Django 测试 commit_on_success

我有一个函数,我已经封装@transaction.commit_on_success并在其上运行 Django 单元测试。

该函数太长无法粘贴,但一些伪代码是:

然后在我的单元测试中我检查是否len(Order.objects.all()) == 0

我的函数返回一个有效的 Order 对象,因此事务正在提交。

我在这里做错了什么?

编辑:我在 Django 1.5

0 投票
1 回答
2140 浏览

python - 单元测试 django 应用程序错误创建数据库表 OperationalError: (1005, "Can't create table...)

我正在尝试在包含一些迁移的 django 应用程序中统一我的模型。我已经准备好了我的测试,但是在运行时

我收到以下错误

数据库是正常创建的,所以我想我有创建数据库的权限。我真的不知道这是指哪个表。迁移通过正常,db 在生产中工作正常。这里可能是什么问题?

你还想要什么其他信息?

我的堆栈跟踪

我可以看到调用迁移时出现错误。

PS:我删除了我的数据库(真实数据库,但开发数据库)并尝试重新创建运行迁移的表。我遇到了同样的错误。再次运行 migrate 就像一个魅力......这里真的真的很不对劲......

PS2:删除所有迁移文件夹并在不存在迁移文件夹的情况下运行迁移后开始给我同样的错误....非常糟糕的错误很难调试

PS3:我的一个模型(至少到目前为止我已经测试过)的外键存在问题。我尝试停用应用程序并按条件激活它们,当我到达特定的应用程序时,发生了错误。我隔离了一个模型,并给了我这个问题。我注释掉了外键并工作了。再次取消注释其中一个错误。

它适用于 1.6 和 sqlite3,我移至 1.8 和 mysql,然后繁荣......错误。

MyCustomUser 是一个继承 AbstractBaseUser 和 PermissionsMixin 的类。

0 投票
1 回答
530 浏览

python - ModelForm 使用的 request.POST 前缀在单元测试中不能与 client.post 一起使用

我尝试创建一些集成测试来测试我的 django 项目中的视图。在我看来,我创建了一个带有前缀的 ModelForm

我正在使用 django 客户端在我的集成测试中尝试以下代码。

但在我看来,当我检查 customer_form 是否有效时,我发现它不是。customer_form.errors 包含所有必填字段,尽管数据字典包含这些值。在模型表单上设置前缀时,django 会做不同的事情吗?

0 投票
0 回答
254 浏览

python - django 中的 test.py 中的许多测试用例类无法正确运行

我想在我的 django 项目中的 test.py 中有不同的测试用例类。一个用于模型测试(crud)一个用于视图测试等。我有以下课程

和第二个测试用例

MyModel 实例是在 setup_database 方法中创建的。我不太清楚为什么。如果在执行每个测试用例类后破坏了测试数据库,那么 setup_database 方法应该重新创建了 pk=1 的 MyModel 实例,这样我就已经存在了。如果它没有破坏测试数据库,那么 pk=1 的 MyModel 实例已经存在,所以我也不应该有任何问题。任何帮助,将不胜感激。

0 投票
0 回答
50 浏览

python - Django unittest 比较整个数据库的最简单方法

我想对一个从 csv 文件填充数据库的解析器进行单元测试。我正在寻找一种简单的方法来测试解析器功能。

想到的一种方法是使用真实值填充数据库并将数据库转储到文件(gTDbDump.xml)。在测试用例中,我将运行解析器功能,从而填充数据库并将数据库转储到另一个文件 (testDbDump.xml)。为了比较文件,我会使用文件比较工具来比较文件的相等性。

有更优雅/更简单的解决方案吗?