目的
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',
}