python - Pytest 测试在与其他测试一起运行时失败,但在单独运行时通过

标签 python django pytest channels

我进行了非常基本的测试,检查未登录的用户是否可以连接到我的 websocket,如下所示:

@pytest.mark.asyncio
async def test_unauthenticated_cant_connect_to_websocket(unauthenticated_websocket_communicator: WebsocketCommunicator):
    connected, subprotocol = await unauthenticated_websocket_communicator.connect()
    assert subprotocol == 3000  # subprotocol 3000 is Unauthorised
    assert connected is False

当我使用 pytest -k test_unauthenticated_cant_connect_to_websocket

从 cli 自行测试时,此测试通过了

但是当我从 cli 使用 pytest 时失败

我的消费者连接函数如下:

async def websocket_connect(self, event: dict) -> None:
    if self.scope["user"].is_anonymous:
        await self.close(code=3000)
    else:
        await self.accept()

我有许多其他异步测试,代码类型相似,但它们都通过了。

最佳答案

我通过向测试添加 @pytest.mark.django_db 装饰器解决了这个问题。

关于python - Pytest 测试在与其他测试一起运行时失败,但在单独运行时通过,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73483611/

相关文章:

python - Flask mega 教程第 5 部分错误

python - Django 从数据库中获取数据的表单

python - 使用 get-pip.py 时 pip 安装在哪里?

django - 使用来自 django 应用程序的 kafka 消息

python - 确认浏览器预取导致删除

Django REST 框架。更新获取空的validated_data

django - SMTPDataError at/accounts/signup/(553, b'不允许作为 webmaster@localhost 进行中继')

python - 获取所有自定义标记的列表

python - 使用 pytest --collect-only 只返回单个测试名称

python - 在父项目上运行 pytest 时,如何忽略 git 子模块根目录下的 conftest.py 文件(例如 submodule/conftest.py)?