目的
pytest-django実行時に使用されるデータベース名には、接頭辞として「test_」が付くが、通常modelが使うデータベース名と同じにしたい。
残念ながら、その方法が公式サイトに書かれていなかったので、ソースを読んで調べたメモ。
使用例としては、以下を想定。
- あらかじめ作成しておいたデータを使ってテストを実行する。
- 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.pyのDATABASESに、以下の記述をすれば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',
}