当前位置: 首页 > 知识库问答 >
问题:

在Django1.7中运行单元测试时禁用迁移

徐智渊
2023-03-14

Django1.7引入了数据库迁移。

我知道忽略迁移可能是一个不好的做法,因为这部分代码将不会被测试。但事实并非如此:我在CI测试服务器(jenkins)中运行完整的迁移。我只想跳过本地测试中的迁移,因为速度很重要。

一些背景:

在Django1.6之前,在使用South时,我一直使用SOUTH_TESTS_MIGRATE设置:

可以使用--keepDB选项在测试运行之间保留测试数据库。这样做的好处是可以跳过创建和销毁操作,从而大大减少了运行测试的时间,尤其是在大型测试套件中运行测试的时间。如果测试数据库不存在,则将在第一次运行时创建该数据库,然后为以后的每次运行保留该数据库。任何未应用的迁移也将在运行测试套件之前应用于测试数据库。

所以这个问题仅限于Django1.7。

共有1个答案

涂承运
2023-03-14

看看这个由Bernie Sumption发布到Django开发人员邮件列表的变通方法:

如果makemigrations尚未运行,则“migrate”命令将应用程序视为未迁移,并直接从模型创建表,就像syncdb在1.6中所做的那样。我为单元测试定义了一个新的设置模块,名为“settings_test.py”,它从主设置模块导入*,并添加一行:

MIGRATION_MODULES={“myapp”:“myapp.migrations_not_used_in_tests”}

在Django1.9中,这种情况有所改善,您可以将值设置为none:

MIGRATION_MODULES={“myapp”:None}

 类似资料:
  • Django1.7引入了数据库迁移。 我知道忽略迁移可能是一个不好的做法,因为这部分代码将不会被测试。但事实并非如此:我在CI测试服务器(jenkins)中运行完整的迁移。我只想跳过本地测试中的迁移,因为速度很重要。 一些背景: 在Django1.6之前,在使用South时,我一直使用SOUTH_TESTS_MIGRATE设置: 可以使用--keepDB选项在测试运行之间保留测试数据库。这样做的好

  • 问题内容: 我正在使用一个简单的基于单元测试的测试运行程序来测试我的Django应用程序。 我的应用程序本身配置为在settings.py中使用基本记录器,方法是: 在我的应用程序代码中使用: 但是,在运行单元测试时,我想禁用日志记录,以免混乱我的测试结果输出。有没有一种简单的方法可以以全局方式关闭日志记录,以便在运行测试时,特定于应用程序的记录器不会将内容写到控制台上? 问题答案: 将禁用所有级

  • 当我试图再次运行同样的测试时: 如何禁用缓存,以便gradlew运行整个测试? 谢谢

  • 问题内容: 在Python中使用模块时,如何暂时禁用单个单元测试? 问题答案: 单个的测试方法或类都可以使用装饰器禁用。 有关其他选项,请参阅文档“跳过测试和预期的失败”。

  • 我的Android项目有几个模块(一个应用程序和多个库),当我尝试从命令行运行所有单元测试(RobolectRic3.8)时 我得到以下错误(不是当我从Android Studio运行相同的任务时) 每个模块上的build.gradle文件包含以下配置 application模块定义了两个在同一维度中运行的味道 知道吗?

  • 问题内容: 如果是跑它运行在您的文件结尾通过运行启动格式的功能和使用(* T testing.T)模块。我想知道文件中的每个功能是同时运行还是确定地分别运行每个功能?是否为每个人创建一个执行例程?如果确实为每个例程创建了一个go例程,是否可以某种方式监视go例程?是否有可能做类似的事情并为每个实例获取一个实例并对其进行监控,诸如此类? 注意:这个问题假设您使用go(测试)随附的测试框架。 问题答案