问题标签 [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 回答
1452 浏览

pytest - 如何为某些测试停用 django 插件?

我正在为 Django 运行一些测试,并为使用 Selenium 的网站运行一些其他测试。

我对测试框架的选择是惊人的Pytest

为了测试 Django,我目前已经安装了pytest-django 插件,并且 Django 的测试按预期运行,但是现在我回到了我以前不需要 Django 插件的测试。

我开始测试,Django 插件被自动拾取。
我检查了文档并找到解释如何禁用\停用插件的文章,但是当我运行此命令时:

我收到一条错误消息,指出我的“DJANGO_SETTINGS_MODULE”不在 sys.path 上。

命令如:

或者

给我同样的错误。看起来 Django 插件越来越深入了?当我只是检查版本或“已安装的插件”时,为什么会调用它?

问题:有什么方法可以在不卸载的情况下暂时停用此插件?

0 投票
4 回答
5583 浏览

python - 没有创建 Django 测试表

我正在尝试为我的 django 项目编写测试用例,但是当我运行“$ ./manage.py test”命令时,它正在创建测试数据库,但它没有创建任何表,并且我收到表不存在的错误。欢迎任何建议。这是我通过“./manage.py inspectdb > models.py”创建的模型

0 投票
1 回答
1325 浏览

django - 如何检查是否安装了 pytest-django 以及为什么客户端夹具不起作用?

pytest-django使用 pip 安装并制作了一个测试文件,该文件根据文档client使用夹具,但运行它给了我. 这是我的:fixture 'client' not foundtest_homepage.py

0 投票
2 回答
1635 浏览

python - Django + Pytest + Selenium

我最近从 Django 的 TestCase 类切换到第三方 pytest 系统。这使我能够显着加快我的测试套件的速度(提高了 5 倍),并且总体而言是一次很棒的体验。

我确实有硒的问题。我制作了一个简单的夹具,将浏览器包含在我的测试中

但由于某种原因,数据库在测试之间没有正确重置。我有一个类似的测试

中创建的对象test_some_unittest存在于 中test_with_selenium。我不确定如何解决这个问题。

0 投票
0 回答
561 浏览

python - 使用 xdist 的 Pytest 需要 16 倍的时间,无论工人数量如何

我刚刚将 pytest 添加到现有的 Django 项目中 - 所有单元测试都使用 Django 的unittest子类等。我们使用 SQLite 内存数据库进行测试。

  • manage.py test在我们的测试套件上大约需要 80 秒
  • py.test一样的
  • py.test -n1(或-n4,或类似的东西)大约需要 1280 秒。

我希望支持分发的开销,但显然-n4,在大型测试套件上,它应该快大约 3-4 倍。

发现...

到目前为止,我已经将问题追溯到数据库访问。测试运行很快,直到它们第一次访问数据库,但是在第一次.save()调用 Django 模型时,测试将非常慢。

在对工人进行了一些分析之后,看起来他们花了很多时间等待锁,但我不知道这是否是一个可靠的发现。

我想知道数据库上是否存在某种锁定,有人建议我内存中的 SQLite 数据库可能是内存映射文件,并且锁定可能发生在工作人员之间,但显然每次调用 open带有 SQLite 的内存数据库将返回一个完全独立的实例。


就目前而言,到目前为止,我可能已经在这方面花费了 5 个多小时,并与同事和其他人就此进行了详细的交谈,但尚未发现问题所在。我无法在单独的代码库上重现。

  • 什么样的事情可能会导致这种情况?
  • 我还能做些什么来进一步追查问题?

提前感谢您的任何想法!

0 投票
1 回答
12903 浏览

python - How to show warnings in py.test

I just ran py.test on my code and got the following output:

However, I cannot see what py.test would like to warn me about. How can I turn on warning output to the console?

py.test --help offers me the --strict flag:

--strict run pytest in strict mode, warnings become errors.

However I just want to see the output, not make my tests fail.

I checked pytest.org and this question but they are only concerned with asserting warnings in python, not showing warnings generated on the commandline.

0 投票
0 回答
631 浏览

pytest - 并行运行时硒测试随机失败 - pytest-django

当我运行我的 selenium 测试(使用 selenium webdriver 的 django StaticLiveServerTestCase 测试)时,我在使用 pytest-xdist 并行运行我的测试时随机失败。

有时我的完整测试套件会通过,有时则不会。

我的测试套件中有两个测试似乎最常失败。我所有的测试都从一个夹具加载数据,但是这两个失败的测试创建了新的对象来测试特定的边缘情况。在他们创建对象后,我让我登录的客户端访问被测页面的 URL。

失败模式: 1) 在我的两次测试中创建的对象有时不会出现,我会得到 NoSuchElementException。2) 对象将显示,但值将不正确(它们将呈现为 n/a 而不是我在创建对象时分配的数字)。

我是并行化我的测试版本的新手。到目前为止,我的调试还很初级。任何帮助将不胜感激,无论是通过调试技术还是其他方式!

似乎这与我在使用 webdriver 访问应用程序之前用来操纵数据状态的数据库事务有关,而不是在建立 webdriver 连接之前完成。webdriver 从数据库的旧状态中读取。

我只需要弄清楚如何确保旧连接完成。

0 投票
1 回答
594 浏览

python - Py.test 失败,但 ./manage.py 测试工作正常

我最近接管了一个代码库,我首先添加了 Selenium 测试并转移到 py.test。由于并行性和其他 3rd 方包,我喜欢 py.test,但我注意到 py.test 的主要问题。

代码库是一个 Django 堆栈(Python 2.7 上的 1.8,pytest-2.6.4,目前没有 x-dist)。

1) py.test 测试比普通的 django 测试套件运行得慢(不是很好,但我可以忍受)

2)当我通过执行将单元测试与 Selenium 测试一起运行时py.test一些单元测试失败。如果我只用 py.test 运行单元测试(使用@skipUnless装饰器排除),一切都会通过。当我使用./manage.py test.

py.tests 失败(在使用 unittest 和 selenium 运行时)出现一个奇怪的错误,即DoesNotExist: ActionType matching query does not exist..

py.test 运行的测试与普通的 Django 测试套件不同吗?

当我与 Selenium 测试一起运行单元测试时,有什么建议会失败吗?

Selenium 测试是在失败的单元测试之前执行的,但它们会触及代码的一个非常不同的区域(不同的模块)。

0 投票
1 回答
1211 浏览

django - 使用带有 pytest-django 和多租户数据库的自定义测试运行程序

我无法使 pytest 与我的设置一起工作。我正在使用和django-tenant-schemas来处理我的多租户数据库。

这个想法是我需要在应用迁移之前创建一个租户。这是我的自定义跑步者:

还有我的 conftest.py:

我得到的回溯是:

任何想法如何使这项工作?

0 投票
2 回答
6123 浏览

django - 如何在使用 pytest-django 的测试之间将数据持久化到数据库?

在 Django 应用程序的测试运行中使用 pytest/pytest-django 时,如何将数据保存到数据库?

我运行 pytest并按预期创建py.test --nomigrations --reuse-db -s了 Postgres 数据库test_<configued_db_name>,但是在测试之间似乎没有任何东西被持久化到数据库中,并且在测试运行结束时数据库为空。

第一个测试通过,第二个测试并没有让我怀疑是否有任何东西被持久化到数据库中。根据 pystest-django 文档@pytest.mark.django_db(transaction=False)将不会回滚任何受装饰测试影响的内容。

谢谢,

/大卫