[英]pytest-django run with migrations ignores database triggers
我的Django應用程序依賴於具有某些觸發器設置的數據庫。 我使用文檔的這一部分在pytest運行程序的測試數據庫中設置觸發器。
@pytest.fixture(scope='session')
def django_db_setup(django_db_setup, django_db_blocker):
with django_db_blocker.unblock():
cur = connection.cursor()
cur.execute([...]) # Set it up
我使用--nomigrations
運行測試,它可以按預期運行。 如果沒有--nomigrations
(測試首先運行遷移),則觸發器不起作用。
因此,我嘗試調試
psql test_<mydb>
並在尋找pg_trigger
表) 讓我再次強調一下, 在不進行遷移的情況下運行時測試通過了,在對我的dev db運行dev服務器時測試了功能,我也可以確認它是否有效
因此,我的問題是:使用遷移進行操作應該有什么不同的理由嗎? 還是我的遷移所做的事情晦澀難懂,導致事情失敗,即是我自己的錯?
將觸發器放在django_db_setup
對我django_db_setup
@pytest.fixture(scope='session')
def django_db_setup(django_db_setup, django_db_blocker):
with django_db_blocker.unblock():
cur = connection.cursor()
cur.execute('''CREATE TRIGGER search_vector_update BEFORE INSERT OR UPDATE
ON xml_templates_template FOR EACH ROW EXECUTE PROCEDURE
tsvector_update_trigger(search_vector, 'pg_catalog.english', name, description, info);
''')
pytest(4.4.1)使用--nomigrations
運行
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.