问题标签 [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.
pytest - 如何为某些测试停用 django 插件?
我正在为 Django 运行一些测试,并为使用 Selenium 的网站运行一些其他测试。
我对测试框架的选择是惊人的Pytest。
为了测试 Django,我目前已经安装了pytest-django 插件,并且 Django 的测试按预期运行,但是现在我回到了我以前不需要 Django 插件的测试。
我开始测试,Django 插件被自动拾取。
我检查了文档并找到了解释如何禁用\停用插件的文章,但是当我运行此命令时:
我收到一条错误消息,指出我的“DJANGO_SETTINGS_MODULE”不在 sys.path 上。
还
命令如:
或者
给我同样的错误。看起来 Django 插件越来越深入了?当我只是检查版本或“已安装的插件”时,为什么会调用它?
问题:有什么方法可以在不卸载的情况下暂时停用此插件?
python - 没有创建 Django 测试表
我正在尝试为我的 django 项目编写测试用例,但是当我运行“$ ./manage.py test”命令时,它正在创建测试数据库,但它没有创建任何表,并且我收到表不存在的错误。欢迎任何建议。这是我通过“./manage.py inspectdb > models.py”创建的模型
django - 如何检查是否安装了 pytest-django 以及为什么客户端夹具不起作用?
我pytest-django
使用 pip 安装并制作了一个测试文件,该文件根据文档client
使用夹具,但运行它给了我. 这是我的:fixture 'client' not found
test_homepage.py
python - Django + Pytest + Selenium
我最近从 Django 的 TestCase 类切换到第三方 pytest 系统。这使我能够显着加快我的测试套件的速度(提高了 5 倍),并且总体而言是一次很棒的体验。
我确实有硒的问题。我制作了一个简单的夹具,将浏览器包含在我的测试中
但由于某种原因,数据库在测试之间没有正确重置。我有一个类似的测试
中创建的对象test_some_unittest
存在于 中test_with_selenium
。我不确定如何解决这个问题。
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 个多小时,并与同事和其他人就此进行了详细的交谈,但尚未发现问题所在。我无法在单独的代码库上重现。
- 什么样的事情可能会导致这种情况?
- 我还能做些什么来进一步追查问题?
提前感谢您的任何想法!
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.
pytest - 并行运行时硒测试随机失败 - pytest-django
当我运行我的 selenium 测试(使用 selenium webdriver 的 django StaticLiveServerTestCase 测试)时,我在使用 pytest-xdist 并行运行我的测试时随机失败。
有时我的完整测试套件会通过,有时则不会。
我的测试套件中有两个测试似乎最常失败。我所有的测试都从一个夹具加载数据,但是这两个失败的测试创建了新的对象来测试特定的边缘情况。在他们创建对象后,我让我登录的客户端访问被测页面的 URL。
失败模式: 1) 在我的两次测试中创建的对象有时不会出现,我会得到 NoSuchElementException。2) 对象将显示,但值将不正确(它们将呈现为 n/a 而不是我在创建对象时分配的数字)。
我是并行化我的测试版本的新手。到目前为止,我的调试还很初级。任何帮助将不胜感激,无论是通过调试技术还是其他方式!
似乎这与我在使用 webdriver 访问应用程序之前用来操纵数据状态的数据库事务有关,而不是在建立 webdriver 连接之前完成。webdriver 从数据库的旧状态中读取。
我只需要弄清楚如何确保旧连接完成。
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 测试是在失败的单元测试之前执行的,但它们会触及代码的一个非常不同的区域(不同的模块)。
django - 使用带有 pytest-django 和多租户数据库的自定义测试运行程序
我无法使 pytest 与我的设置一起工作。我正在使用和django-tenant-schemas来处理我的多租户数据库。
这个想法是我需要在应用迁移之前创建一个租户。这是我的自定义跑步者:
还有我的 conftest.py:
我得到的回溯是:
任何想法如何使这项工作?
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)
将不会回滚任何受装饰测试影响的内容。
谢谢,
/大卫