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

python - Django 测试 VS pytest


我是 djangounittestpytest. 但是,我开始觉得pytest测试用例更紧凑、更清晰。

这是我的测试用例:

这是pytest版本

的好处pytestfixture在另一个文件中。通过让它们成为我的输入参数,它使我的测试用例变得紧凑。

他们unittest比使用 Django 有什么好处pytest吗?

更新:2017 年 7 月 1 日
更新:2017
年 7 月 5 日更新:2017 年 9 月 1 日更新:2017
年 9 月 29 日
更新:2017 年 12 月 26 日

  1. 当夹具在测试中发生突变时,Pytest 可以减少您的问题。我testcases单独通过了该运行,但是在彻底运行时失败了。
  2. 如果发生错误,Pytest 将向您显示断言输出。Django unittest 没有。我必须自己设置断点并调查错误。
  3. Pytest 允许您使用带有简单装饰器的真实数据库。Django 测试没有。您必须为您的工作创建自己的自定义命令
  4. Pytest 是通用的。作为一个通用的,这意味着你在 Django 之外的项目中工作感觉很舒服。例如,当您必须构建诸如 Flask 之类的微服务 + 诸如 APScheduler、PyRad 等 3rd 方时。我提到这一点是因为我的后端生活使用 Django 50% 其余的 isPython和 infra
  5. Pytest 没有使用多重继承来创建我的固定装置
  6. 当与运行程序一起使用时, Unittestgitlab-ci优于 Pytest,Docker无需任何额外配置即可顺利执行。问题
0 投票
2 回答
5603 浏览

python - 如何使用 PUT 在 Django REST 框架中测试文件上传?

我想为 Django REST Framework 应用程序的视图编写单元测试。测试应该使用 PUT 上传文件,本质上相当于

http -a malkaouri PUT http://localhost:8000/data-packages/upload/ka @tmp/hello.py

到目前为止我写的代码是

显然,它不会上传文件。运行测试时的具体错误是400:

{u'detail': u'缺少文件名。请求应包含带有文件名参数的 Content-Disposition 标头。'}

值得注意的是,我使用的是请求工厂来测试视图,而不是完整的客户端。这就是使诸如此问题中的解决方案之类的解决方案对我不起作用的原因。

设置内容处置标头的正确方法是什么?

0 投票
1 回答
7095 浏览

python - 如何使用pytest测试方法是否被调用

我想编写一个单元测试来检查是否正在调用方法。有没有办法做到这一点。或者我误解了在这里可以使用模拟的方式?由于这种方式 mocked_method 总是被调用但没有任何参数。

PS:在发布之前,我已经检查了与它相关的其他问题,但我认为我误解了我们如何在这种情况下使用模拟的整个概念。请赐教,因为我是新手。

0 投票
1 回答
1044 浏览

pytest - 带有 scope='module' 的 pytest-django 夹具仅适用于第一次测试

使用以下夹具和测试,测试通过: from deal.models import Deal

结果:

但是,如果我将范围更改为“模块”,则第二个失败:

结果:

问题在于数据库没有被持久化,因为我看不到如果我在夹具中返回它,我可以访问创建的交易,但数据库是空的。

如果我只运行 test_2 它当然可以:

我有许多共享相同夹具的测试,如果夹具只能运行一次会快得多,因为 load_deals() 非常慢。

看起来我可以重用名称 django_db_setup 作为夹具,并且 scope='session' 有效,但我需要根据测试运行不同的夹具。

我正在使用 python 3.6.1 - pytest 3.1.2 - pytest-django 3.1.2 和 mariadb 10.1

关于如何使这项工作的任何想法?

0 投票
1 回答
1371 浏览

python - 我无法在 PyCharm 下运行 Django Python pytest

pytest.ini:

我已经安装pytest-djangopyenv。然后我想研究 PyCharm 的关键特性,但不幸的是,当我尝试访问 JetBrain 论坛时。它仅限于公司所有者。我不能发布我的问题,因为我只是一名员工。

在此处输入图像描述

这是我点击播放的时候pytest按钮的时候

**更新参考falsetru答案 在此处输入图像描述

在此处输入图像描述

是的!它像一个PyCharm. 这不是绿灯,因为我skip在测试中放入了装饰器。非常感谢。

0 投票
1 回答
6598 浏览

python - pytest:指定pytest.ini位置的环境变量

如何使用 的位置设置环境变量pytest.initox.ini或者默认setup.cfg运行?pytest

我创建了一个 docker 容器,其中的卷指向我的项目目录,所以我所做的每一个更改在 docker 容器中也是可见的。问题是pytest.ini我的项目根目录上有一个文件,它不适用于 docker 容器。

所以我想在 docker 容器内设置一个环境变量来指定在哪里寻找 pytest 配置。有谁知道我该怎么做?

0 投票
1 回答
8726 浏览

python - 失败:不允许数据库访问,使用“django_db”标记,或“db”或“transactional_db”fixture 来启用它

我的问题是下面的那个。如果我尝试运行测试,它说没有数据库权限,我必须添加该夹具。问题是我已经将该夹具添加到我拥有的任何可能的方法中,但仍然没有。所以我假设我不知道在哪里添加这个标记。

不应该在我调用创建这些对象的类的方法中:test_can_get_page_details

如果我从将用户分配给这些属性的过程中删除 UserFactory,则测试有效。

pytest.ini

test_pages.py

conftest.py

工厂.py

错误

0 投票
1 回答
3134 浏览

python-2.7 - 在 pytest 框架中的另一个测试用例中调用测试用例

我正在使用 pytest 进行自动化。

pytest 中是否有任何选项可以在另一个测试用例中调用测试用例。

0 投票
0 回答
1611 浏览

python - tox 命令失败,但完整命令手动工作

我有一个名为 tox 的unit_tests环境,我用它来尝试使用pytest_django. 当调用命令时,tox -e unit_tests我得到下面的 InvocationError。如果我手动复制并粘贴命令并运行它,我没有问题。为什么tox在这里玩得不好?

tox 2.7 pytest 3.1.1 pytest-django-3.1.2 pytest-cov-2.5.1

毒物

0 投票
1 回答
1850 浏览

python - 使用 pytest-django 客户端的 Django 响应上下文总是无

我正在使用pytest-django来测试一些 Django 视图。

我想测试响应上下文是否包含某些值,但它始终是None.

我的观点:

我的测试:

如果我使用-s标志运行它以查看打印语句,则状态代码为200,并且content包含呈现的模板,包括"hi"上下文中的那个。但是contextNone

我认为这与django.test.Clientclient相同,它应该让我看到上下文......所以我错过了什么?

我试过这个答案但得到了

RuntimeError:setup_test_environment() 已被调用,如果不先调用 teardown_test_environment(),则无法再次调用。