我正在使用PostgreSQL数据库为Django创建unittest
测试。我正在尝试调用项目数据库中的函数,但测试失败,因为它找不到该函数。
我认为原因是因为测试数据库是在测试运行时创建的,而不是在原始数据库中加载函数。
我的问题是,¿我怎么能在Django测试数据库中包含该函数?
答案 0 :(得分:0)
手动创建迁移,然后从那里运行sql文件。遵循以下原则:
from django.db import migrations, connection
# you can add more sql files here later on, bc these are just for testing
def run_raw_sql(apps, schema_editor):
f = open('/home/edgle/web/plan/sql/get_plan_data.sql', 'r')
sql = f.read()
with connection.cursor() as cursor:
cursor.execute(sql)
f = open('/home/edgle/web/plan/sql/role_recursion.sql', 'r')
sql = f.read()
with connection.cursor() as cursor:
cursor.execute(sql)
def reverse_run_raw_sql(apps, schema_editor):
pass # fake
class Migration(migrations.Migration):
dependencies = [
('app_name', 'previous_migration_name'),
]
operations = [
migrations.RunPython(run_raw_sql, reverse_run_raw_sql),
]