Python 自定义django管理命令模块句柄方法中的单元测试函数
我正在使用一个自定义管理命令来运行+500行代码,该代码包含多个函数定义(并执行数据库查询) 管理/commands/talk.pyPython 自定义django管理命令模块句柄方法中的单元测试函数,python,django,unit-testing,Python,Django,Unit Testing,我正在使用一个自定义管理命令来运行+500行代码,该代码包含多个函数定义(并执行数据库查询) 管理/commands/talk.py from django.core.management.base import BaseCommand class Command(BaseCommand): def handle(self): def hello(): print "Hello!" def my_god():
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()
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方法中的函数(例如,通过执行命令().handle.hello()
)来进行单元测试,还是我缺少一种方法
我的解决方案是将所有代码放在management/handle\u command.py
中的handle
方法下,然后导入该代码并在management/commands/talk.py
中的handle
下运行main
。然后我可以从management/handle\u command.py
对函数进行单元测试
建议的管理/commands/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()
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
方法中的测试功能?第一部分:
管理/commands/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()
第二部分:
如果您想在其他地方使用这些方法/将它们添加到
unittest
,显然最好不要将这些方法绑定到命令
类。如果您只在命令
类中使用它们(测试除外),那么您建议的测试方法似乎是最明智的 听起来是个不错的开始,一旦你有了单元测试,那么你也应该能够明智地重构它。K,我只是觉得奇怪,我没有在其他地方遇到我在这里提出的实践。很难相信我是唯一一个需要对包含多个功能的长管理命令模块进行单元测试的人。顺便说一句,谢谢你回答我的两个问题。