gpt4 book ai didi

python - 如何测试访问数据库的其他线程

转载 作者:行者123 更新时间:2023-12-01 04:36:13 26 4
gpt4 key购买 nike

看来django在测试期间使用的数据库没有与其他线程共享

例如:

在 TestCase 类中:

def my_test(self):
print(MyModel.objects.all())
my_function()

在我的类(class)内:

def worker():
print(MyModel.objects.all())

def my_function():
thread = Thread(target=worker)
thread.start()

控制台结果:

[<MyModel object>, <MyModel object>, <MyModel object> ... ]
[]

所以我们得到了第一个调用,但是一旦我们进入另一个线程,它就不再使用测试数据库。

我查看了:Django: using same test database in a separate thread并尝试对“NAME”和“TEST_NAME”使用相同的数据库,但它对我不起作用

即使线程正在访问数据库,我可以做什么来测试我的线程?

最佳答案

Django 的 TestCase 在单个事务中运行每个测试类。任何更改都不会提交,因此其他线程无法读取这些更改的效果。

解决方案是使用TransactionTestCase。它将在默认的自动提交模式下运行查询,并且您的更改将立即可供其他线程使用。

关于python - 如何测试访问数据库的其他线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31652627/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com