问题标签 [pytest-django]

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

django - RecursionError:使用工厂男孩时

我不能正确使用工厂男孩。

那是我的工厂:

和我的测试:

但是我在运行 pytest 时得到了这个:

journal1 = JournalFactory.create(sections=(section0, section1, section2))

harrispierce_tests/test_index.py:22:

RecursionError:调用 Python 对象时超出最大递归深度

!!!检测到递归(相同的本地人和位置)

0 投票
3 回答
3690 浏览

python - 如何断言 django 在 pytest 中使用某些模板

unittest样式中,我可以通过调用assertTemplateUsed. 这很有用,例如,当 Django 通过模板插入值时,我不能只测试字符串是否相等。

我应该如何在pytest中编写等效语句?

我一直在寻找pytest-django但不知道该怎么做。

0 投票
0 回答
187 浏览

django - 将 Cookiecutter-django 用户 url 添加到 i18n_patterns 会破坏测试

我在测试和国际化方面遇到问题。

  • 项目是 Django 1.11
  • 蟒蛇 3.5
  • 使用 cookiecutter-django 创建的项目

settings.py 中的国际化代码:

在用户的标准 Cookiecutter 测试上运行 pytest,不添加 i18n_patterns,成功完成。像这样更新网址后:

然后 url 测试失败。输出如下所示:

如您所见,问题在于 /en-us/ 是 url 上使用的前缀。现在,我可以通过在我的断言中添加 /en-us/ 来解决这个问题。但是,/en-us/ 前缀不正确。这是一个语言代码,而不是我的设置文件中显示的常规语言前缀。

在测试之外,使用 runserver,如果我导航到 /users// url,它的前缀是 /en/ 而不是 /en-us/

所以,最大的问题是为什么当 i18n_patterns() 使用 /en/ 时测试以 /en-us/ 开头?

编辑 这里是 users/tests/test_urls.py 的内容

0 投票
1 回答
1474 浏览

python - Docker runner pytest 不收集测试用例

我已成功放入ssh-keydocker runner,它可以git clone进行依赖项安装。

如果我使用普通的内置python manage.py test它工作正常。但我现在正在使用pytest. 我可以pytest在命令行上运行并获得正常结果。

但是当我在gitlab-ci. 我docker用作runner.
更新1:
我确认。我pytest.ini在顶层目录中。 pytest.ini

.gitlab-ci.yml

问题:
更新 2:
更新 3:

  1. 如何使用gitlab-cirun pytestby using docker runner
0 投票
7 回答
10700 浏览

python - 尝试运行 pytest-django 时“尚未加载应用程序”

以Django 教程中的(部分)民意调查应用程序为例,我试图得到pytest-django运行。

使用命令django-admin startproject mysite2,我创建了一个具有以下结构的项目目录:

我的pytest.ini样子

按照教程,在polls/models.py我创建QuestionChoice模型中:

现在,如果我tests.py按照教程中的描述进行制作,它基于 Python 的内置unittest模块,

我从命令行运行python manage.py test,预期测试失败:

但是,如果我将测试代码更改为(尝试的)pytest等效代码(即,无需子类化TestCase并使用普通断言):

并运行pytest命令,我收到以下错误:

到目前为止,我还没有找到解决此问题的方法。关于如何让测试运行的任何想法?

0 投票
2 回答
2319 浏览

django - 如何使用 django-pytest 跟踪 Django 重定向?

在 Django 中设置ArchiveIndexView时,我可以通过自己导航到页面来成功显示模型中的项目列表。

当要在 pytest 中编写测试以验证导航到“checklist_GTD/archive/”页面是否成功时,测试失败并显示以下消息:

我知道有一种方法可以按照请求获取最终的 status_code。有人可以帮助我如何在 pytest-django 中完成这项工作,类似于这个问题吗?pytest-django 上的文档没有关于重定向的任何内容。谢谢。

0 投票
2 回答
988 浏览

python - 如何在从 manage.py 中定义的环境变量导入设置的项目上运行 django-pytest

我正在开发一个 Django 项目,其中在文件SECRET_KEY中定义了诸如此类的设置,并使用python-dotenv设置环境变量,如下所示:.envmanage.py

然后settings.py简单地从环境变量中定义模块级设置,例如,

我现在正在切换到pytest-django进行单元测试。然而,问题是,如果不python manage.py先运行,环境变量就不会设置,所以我最终得到

我现在考虑解决这个问题的方法是定义一个自定义操作来注册manage.py以运行pytest(遵循https://docs.djangoproject.com/en/2.0/howto/custom-management-commands/)。不过,这似乎有点像用大锤敲碎坚果。有什么更优雅的方法来解决这个问题的建议吗?

0 投票
1 回答
2996 浏览

python - 将 manage.py 与 pytest-django 一起使用“找不到文件”

我有一个 Django 项目,其中设置了某些环境变量manage.py,稍后将其用作settings.py. 因此,为了运行pytest-django,我想先运行manage.py

我正在尝试按照https://pytest-django.readthedocs.io/en/latest/faq.html#how-can-i-use-manage-py-test-with-pytest-django中的说明进行操作,但是我遇到了一个意外的错误。我有以下目录结构:

的内容runner.py完全取自常见问题解答:

最后,在lucy/settings/base.py我添加以下行:

最后,该pytest.ini文件与文档中的示例相同:

问题是pytest似乎无法找到测试。如果我运行命令

我明白了

但是,如果我注释掉该TEST_RUNNERbase.py并运行相同的命令,则测试会成功运行:

我在这里做错了什么?我需要放在runner.py不同的位置吗?

0 投票
2 回答
2592 浏览

python - 如何使用 pytest 在 Django 中测试重定向?

我已经知道可以实现一个继承自的类SimpleTestCase,并且可以通过以下方式测试重定向:

但是,我想知道使用 pytest 检查重定向的方法是什么:

但是,我收到以下错误:

E TypeError:assertRedirects() 缺少 1 个必需的位置参数:'expected_url'

有什么方法可以使用 pytest 来验证 Django 的重定向?或者我应该使用继承自的类SimpleTestCase

0 投票
0 回答
476 浏览

python - 使用 py.test 在 django 中测试 `CharField(unique=True)`

我正在努力将 django 应用程序的所有测试移至 py.test。

我无法克服的一种情况是测试模型字段的唯一性约束是否被强制执行。

一个示例测试:

此测试失败:

有什么指导吗?

谢谢!