我正在运行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-asyncio
和pytest-django
,并且我100%确定通过在顶部放置一个打印语句来加载文件本身。\ n我所有的其他测试都正常运行。非常感谢任何帮助。
答案 0 :(得分:3)
默认Django测试运行程序未实现与asyncio一起使用,并且不会正确自动发现用@pytest.mark.asyncio
装饰的测试功能。
The FAQ does a decent job of outlining the reasons tests wont be found,但这是我为了最终解决此问题所做的工作。
安装库pytest
,pytest-django
和pytest-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