如何在Travis上的测试文件中运行管理命令?

时间:2015-05-12 16:08:27

标签: django travis-ci

在我的一个测试文件中,我调用了一个Django管理命令:

def setUpModule():
    management.call_command('loaddata', 'frontend/fixtures/chemicals.json',
                            verbosity=0)
    management.call_command('create_indexes_and_matviews',
                            db_name, db_user, db_pass,
                            verbosity=2)

当我使用manage.py test在本地运行时,此测试运行正常。

然而,在特拉维斯,我得到了这个错误:

======================================================================
ERROR: setUpModule (frontend.tests.test_api_views)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/travis/build/.../frontend/tests/test_api_views.py", line 35, in setUpModule
    verbosity=2)
  File "/home/travis/virtualenv/python2.7.9/lib/python2.7/site-packages/django/core/management/__init__.py", line 95, in call_command
    raise CommandError("Unknown command: %r" % name)
CommandError: Unknown command: 'create_indexes_and_matviews'

我怎样才能让特拉维斯了解这个命令?

这是我的Travis档案:

language: python
python:
  - "2.7"
addons:
  postgresql: "9.3"
env:
  - SECRET_KEY=test DB_NAME=dbtest DB_USER=test DB_PASS=test
before_install:
  - export DJANGO_SETTINGS_MODULE=....settings.local
  - export PYTHONPATH=$HOME/builds/...
install:
 - pip install -r requirements.txt
 - pip install -r requirements/local.txt
before_script:
 - psql -U postgres -c 'CREATE DATABASE dbtest;'
 - psql -U postgres -c "CREATE EXTENSION postgis" -d dbtest
 - psql -U postgres -c "CREATE EXTENSION postgis_topology" -d dbtest
 - psql -U postgres -c "CREATE USER test WITH CREATEUSER PASSWORD 'test';"
 - psql -U postgres -c "GRANT ALL PRIVILEGES ON DATABASE dbtest to test;"
 - psql -U postgres -c "ALTER USER test CREATEDB;"
 - cd frontend && python manage.py migrate
script:
 - python manage.py test

我是否应该添加一些内容以便知道在何处查找管理命令?

1 个答案:

答案 0 :(得分:0)

从我的实践中我知道这个问题的两个原因。

A。 the_app中列出了create_indexes_and_matviews的{​​{1}}(可能会错过,if / else或try / except magic除外)

要检查实际设置,请尝试将以下命令添加到Travis文件

settings.INSTALLED_APPS

B。错过了应用依赖项。尝试使用以下命令获取travis上的实际错误:

echo "from django.conf import settings;print(settings.INSTALLED_APPS)" |  python manage.py shell

通常,真正的导入错误足以找到修复程序。