问题标签 [django-testing]

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 回答
338 浏览

django - Django 单元测试在数据库库中的代码设置中失败?

考虑以下:

看这个,看起来抱怨的错误是 Django 的 ORM 生成了不正确的 SQL。鉴于这甚至阻止了我运行测试,我应该从这里去哪里?

编辑:似乎执行路径通过了迁移。这是该迁移的代码:

如果它是相关的,我正在使用 South。

这真的是 Django 组件中的错误,还是源于我的代码中的某个地方?如果是我的代码,我应该在哪里寻找,我应该寻找什么?

0 投票
1 回答
510 浏览

django - 在 Django 配置文件应用程序中测试视图的最佳实践?

我想为 Django 配置文件应用程序中的视图编写一些测试。

这些视图有一些智能的错误处理逻辑。例如,如果我们尝试创建配置文件,但配置文件已经存在,则只需重定向到现有配置文件页面(或者可能重定向到编辑配置文件页面)。

如何测试此错误处理是否按预期工作?什么是最佳实践?

一个想法是使用 Zombie.js 进行 BDD,并测试我看到一个标题不是“创建配置文件”的页面(或者检查我看到一个标题是“编辑配置文件”的页面)。但是 Django 测试文档说:

  • 使用 Django 的测试客户端来确定正在调用正确的视图并且该视图正在收集正确的上下文数据。
  • 使用 Twill 和 Selenium 等浏览器内框架来测试呈现的 HTML 和网页的行为,即 JavaScript 功能。

但是,如果我想使用 Django 测试客户端,它可以执行以下操作:

  • 模拟 URL 上的 GET 和 POST 请求并观察响应——从低级 HTTP(结果标头和状态代码)到页面内容的所有内容。
  • 测试是否为给定的 URL 执行了正确的视图。
  • 测试给定的请求是否由给定的 Django 模板呈现,模板上下文包含某些值。

我应该使用测试客户端然后查看页面内容吗?我应该看看渲染了什么模板吗?测试此视图的适当方法是什么?

0 投票
1 回答
1178 浏览

django - Django 测试客户端响应包含空的模板列表?

根据 Django 测试文档,Django 客户端响应对象包含“模板”,即:“用于呈现最终内容的模板实例列表,按照它们呈现的顺序。对于列表中的每个模板,使用模板。 name 获取模板的文件名,如果模板是从文件中加载的。(名称是字符串,例如 'admin/index.html'。)"

但是,我得到一个空的模板列表,即使我确信模板已被渲染。

为什么模板是空的?如何查看渲染的模板?

0 投票
1 回答
3748 浏览

django - Django 测试装置和内容类型

我在我的模型中使用 django 的ContentType外键,并且我在装置测试中使用它。

因此,我必须在我的夹具中硬编码content_type_id,但 django 有时会将其初始化为不同的值,因此我的测试失败。

那么有没有办法安全地预测模型的content_type_id或任何其他适当的方法来处理这种情况?

0 投票
2 回答
1772 浏览

python - Django中的测试放置方法

我正在我的 Django 应用程序中测试 PUT 方法。但是,当我打电话时:

在我的测试中,我认为出现以下错误:

引发此错误的行是:

那么,如何确保我使用 put 请求(不是 FakePayload 对象)发送的实际有效负载是我试图在我的视图中测试的代码的内容?

0 投票
3 回答
205 浏览

django - TestCase To Detect DatabaseError: no such column

我最近在我的一个模型中添加了一个新字段,但忘记在数据库中的表中添加适当的列。我有测试用例来测试添加此模型的新实例并更改现有实例。这些测试用例都没有失败。然而,当我尝试使用实时站点更改实例时,我得到了

DatabaseError 没有这样的列

我已经尝试从 TestCase 中检测到这个错误,但没有这样的运气。

任何帮助是极大的赞赏。

0 投票
1 回答
233 浏览

django - Django 测试:如何获取只有夹具数据且没有 IntegrityErrors 的数据库(通过诊断错误源)?

我正在尝试使用夹具数据运行测试,并得到臭名昭著的IntegrityError: column user_id is not unique错误。

现在,查看我的灯具,我可以看到我的灯具中的用户模型的 id 彼此之间是唯一的。我推断冲突与(非测试)数据库中的现有数据发生冲突。这个对吗?(编辑:这似乎是不正确的 - 见下文)

我希望能够准确控制哪些数据可用于我的测试。有没有办法阻止 django testrunner 从我的实时数据库中加载数据,以及我的夹具数据?(编辑:是的 - 见 Thibaut 的回答)。

编辑:根据 Thibaut 的回答,切换到使用干净的内存数据库并不能解决问题。因此,我推断我现有的开发数据库不是问题。

所以,我有第三个问题:在测试期间加载夹具时如何诊断 IntegrityError 的原因?(而且,我该如何解决?)

编辑 2:我的问题的解决方案,除了从一个干净的数据库开始(根据 Thibault J)之外,还从安装的应用程序中删除引用用户的模型,直到错误不再发生。

DrTyrsa 的另一个建议(除了查看数据)是使用自然键,这对于 User 无疑需要一定数量的猴子补丁或其他黑客(编辑 User 的代码?)。

0 投票
3 回答
783 浏览

django - 在 Django 1.3 中使用 ImageFields 测试模型时防止剩余的图像文件

Django 1.3 改变了带有FileFields 的模型的行为,这样当实例被删除时,实际的文件仍然存在。对于大多数目的,这很好。但是,我正在测试一个大量使用ImageFields 的应用程序,最终在我的开发上传目录中发现了数百个无用的剩余图像。由于它是开发,这不是什么大不了的事,但我更愿意在测试中自己清理。

测试时使这些图像不徘徊的最佳方法是什么。我强调这部分是因为我不想全面修改这种行为,使用delete覆盖等。

0 投票
6 回答
5761 浏览

python - 为 Django 测试生成内存中的图像

是否可以为测试目的生成内存中的图像?

这是我当前的代码:

0 投票
1 回答
383 浏览

django - 安装的 Django 应用程序(注册)不使用主 urls.py 进行测试

我不确定这是 django-registration 的错误还是我在做什么。

我有一个最小的项目,安装了 django-registration 并且没有我自己的应用程序。Django 注册需要一些模板,所以我将它们放在templates/registration. 在每个模板中,我都有一个模板标签{% url index %},它包含在我的urls.py.

通过运行./manage.py test registration --failfast,我得到:

我自己的模板没有看到我的 url 条目。

我调试了 Django 的 reverse 函数,似乎我urls.py的根本没有被使用。而是registration.tests.urls.py使用。

这是预期的行为吗?我希望不会,因为我无法通过基本测试。我该如何解决这个问题?