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

django - Django 测试 - 获取初始值并反馈它们

我有一个引用 ForeignKeys 和 ManyToMany 对象的基本模型。在“编辑”测试中,您正在获取视图的 id 并对其进行更改,我遇到了一个问题,我很好奇是否有其他人想出了更干净的解决方法。我发现这篇文章让我走上了正确的道路

但你不能这样做。如果你有 FK 或 M2M,你需要先做这个丑陋的事情......

有没有其他人遇到过这个问题,或者有没有更好的方法来处理这个问题?

0 投票
1 回答
2519 浏览

python - 如何在 Django 单元测试中访问 Django 消息框架内容

使用 Django 消息框架,我将消息传递给模板以在各种场景中呈现 - 用户帐户创建成功等。消息存储在会话的 cookie 中:

cookie 是一个Morsel对象,但我似乎无法提取它的组成部分来测试消息内容。任何帮助将非常感激!

0 投票
2 回答
925 浏览

django - 在 django_webtest 案例中无法重定向到 @login_required URL

我正在使用django_webtest来测试我的应用程序。尝试测试注册页面时遇到问题。该页面应该创建用户并进行其他初始操作,验证新创建的用户并将其重定向到GET 请求的下一个参数中指定的页面。

这是视图方法的代码:

现在,当用户在浏览器中输入 example.com/sign_up/?next=/settings/ 时,我尝试测试其行为,正确填写表单的所有字段并提交。

处理/settings/的视图有装饰器@login_required,但是在用户成功注册后,他应该经过身份验证,所以我希望提交后用户会去example.com/settings/(当我手动测试时他会去) .

但是当我运行测试时:

它返回“AssertionError:无法检索重定向页面'/settings/':响应代码为 302(预期为 200)”。当我调试时,我看到 *submit_response* 确实是 302 FOUND 位置路径 /settings/。但是当方法assertRedirects尝试获取目标页面时,它又面临重定向 - example.com/settings/ 重定向到 example.com/login/?next=/settings/。所以用户在提交后没有登录。

好的,我尝试用测试客户端的登录方式登录他:

但还是一样。看来,这种方法是行不通的:

印刷

您能否帮助我理解为什么登录功能在测试用例中不起作用以及如何在重定向之前登录用户。

谢谢!

0 投票
2 回答
1534 浏览

django - django_webtest 中的用户身份验证

我的模板中有以下代码:

如您所见,它显示不同的链接取决于用户是否登录。如果我手动测试它可以正常工作,但是当我尝试使用以下代码对其进行测试时:

login()返回 True,但测试失败。我为 home 对象调用了 showbrowser() 并查看返回的页面,看起来像匿名用户的页面 - 除了指向设置和注销的链接之外,它还包含注册和登录的链接。

在模板中使用 *request.user.is_authenticated* 来检查用户是否经过身份验证是否正确?为什么模板看不到该用户是从test注册的?

谢谢!

0 投票
5 回答
3403 浏览

python - Django 测试:临时数据库文件中没有数据

我正在使用如下设置的 sqlite3 数据库settings.py

在测试运行期间开始:

这会临时创建一个数据库文件path/to/test-config.sqlite,我在另一个加载了所需装置的应用程序中需要该文件。

然而,数据库文件是空的,我在一个测试的暂停期间断言:

其他不需要 sqlite 文件并且内存数据库就足够的测试用例,不会发生错误。

我的问题:

  • 如果 django 无论如何创建它,为什么不将其数据刷新到数据库文件?和
  • 我如何说服 django 这样做,因为我需要将数据转储到临时数据库文件中?

编辑

如果有任何兴趣,我正在使用 Django 1.3.1。

编辑2

我对fixtures很熟悉,我用它们来填充数据库,但我的问题是fixtures的数据在测试期间没有写入数据库文件。对不起,如果我对这个事实不够清楚。

编辑3

由于我的问题需要澄清,请考虑以下测试设置(接近我实际所做的):

testSomething方法运行到断点时,我启动sqlite3程序并连接到 Django 创建的临时数据库文件。夹具已加载(我知道,因为其他测试也可以正常工作),但数据未写入临时数据库文件。

0 投票
1 回答
1383 浏览

django - Django 测试运行程序和使用身份验证后端测试客户端登录的问题

使用外壳,我可以这样做:

现在在 test.py 文件中:

我得到这个输出:

我在整个互联网上都看过,但找不到任何有助于解决这种情况的东西。有任何想法吗?

在类似的注释中,我已经注释掉了:from django.views.decorators.debug import sensitive_post_parameters并且我的代码中的所有@sensitive_post_parameters()装饰器,因为每次我运行./manage.py test appdjango 都会抱怨:
Could not import app.views. Error was: No module named debug
删除这个装饰器和导入语句允许它继续前进。

我非常迷茫,我需要 StackOverflow!感谢大家。

0 投票
1 回答
2568 浏览

python - 有什么方法可以将自定义/调试消息添加到 python/django unittest.TestCase 的失败测试方法的详细信息中?

我正在使用unittest.TestCase为我的 django 应用程序编写测试用例(这与 python 中的 unittest.TestCase 基本相同)。每当测试方法失败时,我都会以下面的格式得到它的解释。有没有办法可以将自定义/调试消息添加到失败的测试方法的输出中?

0 投票
2 回答
25631 浏览

python - 为 django 模型编写测试用例

我目前的项目进行到一半,在经历了无数分钟调试的痛苦之后,我决定采用 TDD。首先,我计划为每个现有模型编写一组单元测试。但是对于只定义了属性的模型(即没有其他方法/属性),我不确定我需要测试什么或如何测试。

Product为例,单元测试应该涵盖哪些内容?又应该如何覆盖ForeignKeyManyToManyField ?

0 投票
2 回答
596 浏览

django - 检查 pdb 中的 django unittest 错误

我有一个抛出异常的单元测试。我的代码没有抛出异常,它来自 django 深处的某个地方。我想在那个地方打开一个 pdb 会话,看看有什么问题,但是当我用 pdb 打开 ipython 并且run test myapp测试运行时,抛出异常,打印它,但 pdb 没有捕获任何东西。

我猜这个绝望的人的解决方案是打开 django 的源代码并插入import pdb; pdb.set_trace()我想要调查的地方。但一定有更好的方法。我错过了什么?

0 投票
3 回答
2592 浏览

django - 如何在 Django 测试中获取用户?

我有一些外部服务。我的 Django 应用程序构建在我的外部服务 API 之上。为了与我的外部服务通信,我必须传入一个身份验证 cookie,我可以通过读取User(那个 cookie != django cookie)来获取它。

使用 , 之类的测试工具webtestsrequests我在编写测试时遇到了麻烦。

我需要提交一个表单,它会在我的外部服务上创建一个用户。但要做到这一点,我通常会传入request.user(为了验证我对外部服务的权限)。但我没有request.user

我对这类东西有什么选择?

谢谢...


假设这是我的tests.py

我明白了

但是,如果我测试User.objects视图,我没问题。