【发布时间】:2022-08-02 12:28:47
【问题描述】:
我遇到了一个问题,即 VSCode 的测试功能使用生产数据库而不是创建测试数据库。 测试.py
from django.test import TestCase
# For VSCode test discovery
from django import setup
import os
os.environ.setdefault(\"DJANGO_SETTINGS_MODULE\", \"testing.settings\")
setup()
class MyTestCase(TestCase):
def test_some_test(self):
SomeModel.objects.create()
my_model = SomeModel.objects.all()
assert len(SomeModel.objects.all()) == 1
我之前创建了SomeModel 的1 个实例,所以如果你在shell 中执行SomeModel.objects.all(),它会返回一个带有该实例的查询集。
如果我从 vscode 的测试器运行此测试,它将失败。当我调试它时,我可以看到my_model 在查询集中有两个SomeModel 实例。它不使用测试数据库,而是使用生产数据库
当我从python manage.py test my_app.tests 运行它时,它通过了。并在测试开始和结束时分别输出\'Creating test database\'和\'Destroying test database\'。我假设这使用了一个测试数据库。
如何让 VSCode 使用测试数据库进行测试,我是否遗漏了什么?
-
如果你在测试中尝试debug mode,它会得到实例吗?
-
@MingJie-MSFT 是的,我发布的图像是测试中的调试模式。我已经通过切换到pytest解决了这个问题,尽管我仍然很好奇这个问题是否可以解决
-
这个问题本身似乎是一个错误。我认为您可以在GitHub 中创建问题。当然,我很高兴您可以使用 pytest 以另一种方式解决问题,请考虑回答并接受它作为答案以将其状态更改为已回答。它还将帮助其他人解决类似的问题。见can I answer my own question..,只是一个提醒:)
标签: python django visual-studio-code