1

我正在使用自定义管理命令来运行 +500 行代码并包含多个函数定义(并执行数据库查询)。

管理/命令/talk.py

from django.core.management.base import BaseCommand

class Command(BaseCommand):
    def handle(self):
        def hello():
            print "Hello!"
        def my_god():
            print "OMG!"
        def main():
            hello()
            my_god()

我无法单独访问句柄方法中的函数(例如通过Command().handle.hello()do )以对它们进行单元测试,还是我错过了一种方法?

我对此的解决方案是将所有代码放在handle方法 in下management/handle_command.py,然后只导入该代码并在inmain下运行。然后我可以对来自.handlemanagement/commands/talk.pymanagement/handle_command.py

提议的管理/命令/talk.py 示例

import my_project.my_app.management.handle_command
from django.core.management.base import BaseCommand

class Command(BaseCommand):
    def handle(self):
        my_project.my_app.management.handle_command.main()

我应该如何最好地处理handle自定义 django-admin 命令模块方法中的测试功能?

4

1 回答 1

2

第一部分:

管理/命令/talk.py

您将需要使用self

class Command(BaseCommand):
    def hello(self):
        print "Hello!"
    def my_god(self):
        print "OMG!"

    def handle(self):
        # this was def main():
        self.hello()
        self.my_god()

第二部分:

Command如果您想在其他地方使用这些方法/将它们添加到unittest. 如果您只在Command课堂上使用过它们(测试除外),那么您建议的测试方法似乎是最明智的。

于 2013-02-04T10:47:50.337 回答