gpt4 book ai didi

python - 如何在生产数据库上运行 django 单元测试?

转载 作者:IT老高 更新时间:2023-10-28 20:35:34 27 4
gpt4 key购买 nike

我正在开始 TDD 开发态度,并正在为我的 django 应用程序编写单元测试。我知道夹具并且知道这是应该执行测试的方式,但是对于给定的测试,我确实需要在整个数据库上执行它,而我不想处理 10+ 百万行数据库的 json 夹具,而且,这个测试是“只读的”。

所以问题是您如何设置测试套件以在生产数据库上运行?我想它可以像在某些测试的 setUp 方法中添加 DATABASE_NAME 设置一样简单。但是 settings.DATABASE_NAME="prod_db"在运行测试时会导致“NameError: global name 'settings' is not defined”。此外,http://code.djangoproject.com/ticket/11987 中描述了一个风险。 ,您可能会意外删除生产数据库。

那么,如何在生产数据库上运行测试套件的单个测试而不是临时测试,或者更好的是,最佳实践是什么?

如有任何意见,请提前喝彩!

最佳答案

如果有人在这里谷歌搜索给定问题的解决方案,这里是关于如何在 django 生产数据库上执行单元测试的框架。查看 django 文档部分 here ,用于文件/目录结构,以及有关放置给定代码的位置的说明。它应该放在 yourapp/management/commands/newcommandname.py 中,并且 management 和 commands 文件夹都应该包含空的 __init__.py 文件,这使得 python 将它们视为有效模块.

测试套件可以运行为:

$python manage.py newcommandname

下面是您应该放入 yourapp/management/commands/newcommandname.py 的代码:

from django.core.management.base import BaseCommand
import unittest

class Command(BaseCommand):
help = """
If you need Arguments, please check other modules in
django/core/management/commands.
"""

def handle(self, **options):
suite = unittest.TestLoader().loadTestsFromTestCase(TestChronology)
unittest.TextTestRunner().run(suite)


class TestChronology(unittest.TestCase):
def setUp(self):
print "Write your pre-test prerequisites here"

def test_equality(self):
"""
Tests that 1 + 1 always equals 2.
"""
from core.models import Yourmodel
self.failUnlessEqual(1 + 1, 2)

关于python - 如何在生产数据库上运行 django 单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1646468/

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