从测试运行Django管理命令?

2024-10-03 15:34:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个Django管理命令,用于在数据库上创建具体化视图,其运行方式如下(我将数据库登录详细信息存储在环境变量中):

python manage.py create_db_matviews $DB_NAME $DB_USER $DB_PASS

管理命令代码如下所示:

 class Command(BaseCommand):
   def handle(self, *args, **options):
    db_name = args[0]
    db_user = args[1]
    db_pass = args[2]
    self.conn = psycopg2.connect(database=db_name, user=db_user,
                                 password=db_pass)

现在我想从测试内部运行management命令,以便在测试数据上创建具体化视图。但是,这不起作用:

def setUpModule():
    # load fixtures, then... 
    management.call_command('create_db_matviews',
                        ['test', 'test', 'test'], verbosity=0)

故障如下:

.... 
db_user = args[1]
IndexError: tuple index out of range

如何以管理脚本希望的方式向其提供参数?你知道吗

另外,我应该使用什么凭据来访问测试数据库?你知道吗


Tags: nametest命令self视图数据库dbdef
1条回答
网友
1楼 · 发布于 2024-10-03 15:34:01

它失败是因为在参数的元组中只设置了一个参数,其中包含3个值。您应该使用:

management.call_command('create_db_matviews', 'test', 'test', 'test', verbosity=0)

*agrs是pythons发送多个参数的方式,所有参数都将作为元组发送。您发送(['test', 'test', 'test', ],) 所以args[0]['test', 'test', 'test', ],而不是'test'

相关问题 更多 >