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

django - 如何跳过 Django 中的单元测试?

如何强制跳过 Django 中的单元测试?

@skipif 和 @skipunless 是我发现的全部内容,但我现在只想跳过测试以进行调试,同时理顺一些事情。

0 投票
2 回答
1999 浏览

django - Django:单元测试 ListView 和 assertContains 的问题

我正在改编官方 Django 1.5 教程中的单元测试。我正在尝试在 ListView 上测试一个空上下文。我收到以下错误:

这是我的 ListView 代码:

这是我的 TestCase 方法:

但是在官方教程中,民意调查具有等效的行(https://docs.djangoproject.com/en/dev/intro/tutorial05/#testing-our-new-view):

我不知道“没有可用的民意调查”存储在本教程提供的视图方法的响应中,但由于某种原因它通过了 - 我的没有。

我的测试方法中缺少什么所以它也通过了?

0 投票
1 回答
432 浏览

python - Django 在 UnitTest / WebTest 中测试 MySQLdb

我有一个 WebTest,我正在使用 django-webtest 对内存中的数据库运行。

有一段代码我无法通过 ORM 运行,它的运行速度是直接 SQL 的 5 倍。是的,我熟悉 select_related、batch_select 和 prefetch_related。这就是我的 SQL 代码在我看来是如何执行的。

当我的测试脚本在视图中到达这一点时,它会因以下错误而窒息:

我不确定为什么内存中的 sqlite3 数据库可以通过 ORM 很好地工作,但在我使用 MySQLdb 时却不行。如果我也通过 unittest.TestCase 运行代码,也会发生同样的事情。有任何想法吗?

0 投票
0 回答
520 浏览

python - LiveServerTestCase 不会将 Django 应用程序映射到 url

背景:

我正在尝试为 Django 应用程序设置我的第一个 Selenium 驱动的集成测试。我开发了以下简单代码:

现在,当我使用以下命令运行此测试时:

我得到以下输出:

当我运行常规设置时:

根据页面请求,我得到以下输出:

如您所见,运行测试时无法识别网页(并且实际上没有发出“GET”请求,正如在开发环境请求中正确完成的那样)。我实际上认为“GET”失败只是 LiveServerTestCase 未正确设置应用程序问题的一个指标。

问题:

为什么 LiveServerTestCase 无法识别我的页面 url,我该如何解决这个问题?

0 投票
1 回答
228 浏览

django - 即使没有表单错误,为什么我的 POST 请求在我的单元测试中没有按预期重定向?

我有一个带有表单的 Django 视图,我将在单元测试中发布到该表单。这是测试的一般结构:

但是,我似乎无法弄清楚为什么重定向没有按预期工作。我试过加入 aimport pdb; pdb.set_trace()看看是否有任何表单错误(response.context['form'].errors),但我得到的只是一个空字典。在浏览器中提交表单会正确重定向,所以我不确定单元测试为什么失败,也不确定如何正确调试它,因为表单错误字典中没有显示任何错误。

0 投票
0 回答
141 浏览

django - Django unittest 会话未按预期工作

我有简单的视图测试。我想简单测试'/users/',但我的应用程序需要用户登录的问题。这在这里解释

Django Unittests客户端登录:在测试套件中失败,但在Shell中没有

它按预期工作。因此,我按照此处的说明创建了测试用户,并且它可以正确登录。现在,我想用这段代码从'/user/'得到响应

而这个回报

状态码:403

content: {"detail": "您无权执行此操作。"}

它接缝它不保留来自登录方法的会话。

这里有什么问题?

这是完整的代码

我刚刚创建了基本的 Django REST API 应用程序并添加了 auth 模块,所以完整的视图代码是这样的(rest_api 是应用程序的名称)

序列化程序.py

模型.py 是空的

0 投票
2 回答
1256 浏览

django - HttpResponse 对象在传递给 assertContains 时变为字符串

我在 Django 模板测试中有一个奇怪的问题。当测试执行我的视图时,视图返回一个 HttpResponse 对象。但是,当我将该响应对象传递给 Django TestCase assertContains 方法时,响应对象变成了一个字符串。由于该字符串没有像响应对象那样的“status_code”属性,因此测试失败。这是我的代码:

模板测试.py

当我在调试器中运行此代码并在调用 assertContains 之前执行“type(response)”时,我可以看到“response”是一个 HttpResponse 对象。但是,当调用 assertContains 时,我收到此错误:

我在位置 .../django/test/testcases.py:638 的 assertContains 方法中设置了一个额外的断点:

此时,当我再次执行 'type(response)' 时,我看到它已成为一个字符串对象并且没有 status_code 属性。谁能解释发生了什么?我已经在其他十几个模板测试中成功地使用了相同的测试模式,并且它在所有这些测试中都有效。这可能与此测试涉及上传文件这一事实有关吗?

谢谢。

0 投票
3 回答
8141 浏览

python - 单元测试 Django 查询集

我正在尝试使用 Django/unittest 学习单元测试。

这些是我的模型的简单版本:

这是我想出的测试代码:

测试结果失败,因为AssertionError即使device.get_ips()和的字符串表示[ip1, ip2, ip3]相同。

如果我尝试使用self.assertListEqual我会得到一个错误,因为device.get_ips()它是一个 QuerySet 而不是一个列表。

如果我尝试self.assertQuerySetEqual我得到一个错误说“ DeviceTest object has no attribute assertQuerySetEqual”但我不知道为什么因为DeviceTestextendsdjango.test的 TestCase。

我应该如何做这样的测试?

此外,在“真实”项目中进行如此简单的测试是否有意义?

0 投票
1 回答
4748 浏览

python - PEP8 用于长方法的名称

长方法名称的 PEP8 正确方法是什么?我有一个带有自描述方法的单元测试:

但不幸的是,这种(太长?)方法达到了 80 个字符的行限制。

我应该重命名它并在代码中添加描述还是有其他方法?

0 投票
1 回答
79 浏览

python - 我对运行 django 测试有点困惑

所以我按照这里网站上的说明进行操作:

https://docs.djangoproject.com/en/1.5/topics/testing/overview/

但让我感到困惑的是描述运行时测试范围的部分。它说:

默认情况下,这将在 INSTALLED_APPS 中的每个应用程序中运行每个测试。如果您只想为特定应用程序运行测试,请将应用程序名称添加到命令行。

例如,如果您的 INSTALLED_APPS 包含“myproject.polls”和“myproject.animals”,则可以使用以下命令单独运行 myproject.animals 单元测试:

让我感到困惑的是,该网站的目录结构是这样布置的

所以我真的没有任何更小的应用程序。我基本上只有 1 个大型应用程序,即网站。我的 INSTALLED_APPS 变量中有许多应用程序,但我只想在 mysite 上运行测试。我该怎么做呢?

或者,我是否必须:

将整个站点移动到它自己的应用程序中,布置这样的目录结构并将该应用程序添加到 INSTALLED_APPS

另外,一般来说,这对我的 django 项目来说是一个更好的结构吗?