繁体   English   中英

从UnitTest / WebTest运行Python / Django管理命令

[英]Run Python/Django Management Command from a UnitTest/WebTest

我们在Django站点中有一堆命令,其中一些是管理性命令,而一些是在cron作业上运行,我不知道该如何测试。 它们几乎是这样的:

# Saved in file /app/management/commands/some_command.py
# Usage: python manage.py some_command
from django.core.management.base import NoArgsCommand
class Command(NoArgsCommand):
    def handle_noargs(self, **options):
         # Do something useful

我有一些测试,如下所示:

import unittest
from django.test import TestCase
from django_webtest import WebTest

class SomeTest(WebTest):
    fixtures = ['testdata.json']

    def setUp(self):
        self.open_in_browser = False
        # Set up some objects

    def test_registration(self):
        response = self.client.get('/register/')
        self.assertEqual(response.status_code, 200)
        form = self.app.get('/register/').forms[1]
        # Set up the form
        response = form.submit()
        self.assertContains(response, 'You are Registered.')
        if self.open_in_browser:
            response.showbrowser()

        # Here I'd like to run some_command to see the how it affects my new user.

在我的测试(有评论的地方)中,我想运行NoArgsCommand来查看新用户发生了什么。 我找不到有关如何完成此操作的任何文档或示例。 还要注意,我的测试环境是一个SQLlite数据库,该数据库是我从头开始在内存中创建的,将一些固定装置和对象加载到其中并运行我的测试,以至于我想在一个真实的DB中设置数据,然后运行从命令行输入命令,我不能,这太浪费时间了。 任何想法将不胜感激。

Django有关管理命令的文档可能会有所帮助,它描述了如何从python代码中调用它们。

基本上,您需要这样的东西:

from django.core import management
management.call_command( ... )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM