LoginSignup
10
6

More than 5 years have passed since last update.

pytest-djangoで使用するDB名に接頭辞を付けない方法

Last updated at Posted at 2016-01-17

目的

pytest-django実行時に使用されるデータベース名には、接頭辞として「test_」が付くが、通常modelが使うデータベース名と同じにしたい。

残念ながら、その方法が公式サイトに書かれていなかったので、ソースを読んで調べたメモ。

使用例としては、以下を想定。

  1. あらかじめ作成しておいたデータを使ってテストを実行する。
  2. django内のAPIを実行して、APIにより更新されたデータ値をtest内で確認する。

settings.py
DATABASES = {
    'default': {
        'NAME': 'app_data',
    }

上記設定でpy.test --create-dbを実行すると、test_app_dataが作られて使用されるが、app_dataを使用したい。

mysqlにログインしてテーブルを確認
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| app_data           |
| test_app_data      |
+--------------------+

どうすればいいか?

settings.pyDATABASESに、以下の記述をすればOK。

django1.8以上の場合

'NAME'と同列に、'TEST'をキーとしてdictを追加。
そのdict内に'NAME'をキーとしてDB名を指定する。

settings.py
DATABASES = {
    'default': {
        'NAME': 'app_data',
        'TEST': {
            'NAME': 'app_data',
        }
    }

django1.7以下の場合

'NAME'と同列に、'TEST_NAME'をキーとしてDB名を指定する。

settings.py
DATABASES = {
    'default': {
        'NAME': 'app_data',
        'TEST_NAME': 'app_data',
    }
10
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
6