这可能吗:Django TestCase + 异步 + 数据库调用?
Is this possible: Django TestCase + async + db calls?
在 Django TestCase 的异步方法中使用数据库调用时出现错误:“psycopg2.InterfaceError:连接已关闭”
我知道我可以使用 TransactionTestCase,但它很慢。
是否有使用 Django TestCase 的解决方案?
example.py
from django.contrib.auth import get_user_model
from channels.db import database_sync_to_async
async def func():
return await database_sync_to_async(get_user_model().objects.filter(pk=1).exists)()
test_example.py
import django.test
from asgiref.sync import sync_to_async
from .example import func
class TestFunc(django.test.TestCase):
async def test_func(self):
res = await func()
await sync_to_async(self.assertFalse)(res)
我只需要将 database_sync_to_async
替换为 sync_to_async
:)
在 Django TestCase 的异步方法中使用数据库调用时出现错误:“psycopg2.InterfaceError:连接已关闭”
我知道我可以使用 TransactionTestCase,但它很慢。 是否有使用 Django TestCase 的解决方案?
example.py
from django.contrib.auth import get_user_model
from channels.db import database_sync_to_async
async def func():
return await database_sync_to_async(get_user_model().objects.filter(pk=1).exists)()
test_example.py
import django.test
from asgiref.sync import sync_to_async
from .example import func
class TestFunc(django.test.TestCase):
async def test_func(self):
res = await func()
await sync_to_async(self.assertFalse)(res)
我只需要将 database_sync_to_async
替换为 sync_to_async
:)