代码之家  ›  专栏  ›  技术社区  ›  JChao

当managed=False时如何运行django测试

  •  0
  • JChao  · 技术社区  · 7 年前

    我有一些模型 managed=False . 因此,我的测试由于无法找到表而失败

    我跟踪了这个链接 https://dev.to/patrnk/testing-against-unmanaged-models-in-django https://github.com/henriquebastos/django-test-without-migrations

    跑步者确实跑了,但我仍然遇到同样的问题,我不知道为什么。

    我的django版本是2.1

    我该如何测试时间 托管=错误 ?

    0 回复  |  直到 7 年前
        1
  •  5
  •   Hanny    7 年前

    问题是Django希望迁移在那里!

    setting 你可以检查你是否正在接受测试,比如:

    class Meta(object):
        db_table = 'your_db_table'
        managed = getattr(settings, 'UNDER_TEST', False)
    

    在我的 settings.py UNDER_TEST

    # Create global variable that will tell if our application is under test
    UNDER_TEST = (len(sys.argv) > 1 and sys.argv[1] == 'test')
    

    这将检查test是否是命令中的一个参数(测试时就是这样),因此它将进行设置 True 测试时,Django会将其视为托管模型(因此您会看到表不存在的错误)。。。所以

    django-pytest ,这是一种带来 pytest 很容易进入django。 django-pytest 更为现代且保持现代化(并且使用 皮特斯特 幕后-这是充分充实和可怕的本身)。

    --no-migrations 标记,然后它将读取非托管模型(没有表),并临时为该测试创建这些表(基于模型),而不会像您看到的那样出错。

    这将允许您像编写所有其他托管模型一样为该模型编写测试,并且不再需要担心非托管模型可能会成为应用程序中的问题。