Django完全忽略Asynch测试(Django频道)

时间:2018-03-21 01:54:06

标签: python django testing django-channels

我正在运行Python3.6,Django 2.0和Channels 2.0.2的Web服务器上工作。我想构建一些测试来确保我的websocket消费者自己表现出来,不幸的是,每当我运行测试时,他们都会完全被忽略。

我一直关注official Channels documentation on testing,我按原样复制了代码频道uses to test its generic consumers,但每当我运行测试时,测试运行器只会报告它没有运行测试:

Creating test database for alias 'default'...
System check identified no issues (0 silenced).

----------------------------------------------------------------------
Ran 0 tests in 0.000s

OK
Destroying test database for alias 'default'...

我没有错误或其他警告。我已经仔细检查过我已安装pytest-asynciopytest-django,并且我100%确定通过在顶部放置一个打印语句来加载文件本身。\ n我所有的其他测试都正常运行。非常感谢任何帮助。

1 个答案:

答案 0 :(得分:3)

默认Django测试运行程序未实现与asyncio一起使用,并且不会正确自动发现用@pytest.mark.asyncio装饰的测试功能。

The FAQ does a decent job of outlining the reasons tests wont be found,但这是我为了最终解决此问题所做的工作。

安装库pytestpytest-djangopytest-asyncio

pipenv install pytest pytest-django pytest-asyncio

在项目的根目录下创建一个文件pytest.ini,其中包含以下内容,并将projectname.settings替换为项目设置文件的正确名称。

[pytest]
DJANGO_SETTINGS_MODULE = projectname.settings
python_files = tests.py test_*.py *_tests.py

然后,我可以按照https://channels.readthedocs.io/en/latest/topics/testing.html

中的说明使用pytest进行测试

如果这仍然行不通,请进行浏览:https://pytest-django.readthedocs.io/en/latest/faq.html#faq-tests-not-being-picked-up