Django 完全忽略异步测试(Django 通道)

Django Ignoring Asynch Tests Completely (Django Channels)

我正在使用 Web 服务器 运行ning Python3.6、Django 2.0 和 Channels 2.0.2。我想构建一些测试以确保我的 websocket 消费者行为正常,不幸的是,每当我 运行 测试时,它们都会被完全忽略。

我一直在关注 official Channels documentation on testing, and I copied the code Channels uses to test its generic consumers 但每当我 运行 测试时,测试 运行ner 只是报告它 运行 没有测试:

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% 确定文件本身正在通过在顶部放置打印语句来加载。我所有其他测试 运行 正常。非常感谢任何帮助。

默认的 Django 测试 运行ner 没有实现与 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

然后我能够 运行 使用 pytest 进行测试,如 https://channels.readthedocs.io/en/latest/topics/testing.html

中所述

如果还是不行,请检查一下:https://pytest-django.readthedocs.io/en/latest/faq.html#faq-tests-not-being-picked-up