【问题标题】:VSCode not using test database for Django testsVSCode 不使用测试数据库进行 Django 测试
【发布时间】: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


【解决方案1】:

切换到pytest。 Pytest 会自动为您创建一个测试数据库

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-25
    • 2019-04-18
    • 2020-06-19
    • 2020-11-26
    • 1970-01-01
    • 2018-09-12
    • 2014-08-02
    • 2020-07-02
    相关资源
    最近更新 更多