我正在使用自定义管理命令来运行+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()
我无法单独访问handle方法内部的功能(例如通过执行
Command().handle.hello()
)以进行单元测试,还是我错过了一种方法?我对此的解决方案是将所有代码放在
handle
中的management/handle_command.py
方法下,然后仅导入该代码并在main
中的handle
下运行management/commands/talk.py
。然后,我可以对management/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()
如何最好地处理自定义django-admin命令模块的
handle
方法中的测试功能? 最佳答案
第一部分:
管理/命令/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
类中使用它们(而不是测试),那么建议的测试方法似乎是最明智的。关于python - 定制django-admin命令模块的handle方法中的单元测试功能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14684836/