当前位置: 首页 > 面试题库 >

没有数据库的Django单元测试

羿经武
2023-03-14
问题内容

是否可以在不设置数据库的情况下编写Django单元测试?我想测试不需要设置数据库的业务逻辑。尽管设置数据库的速度很快,但在某些情况下我真的不需要它。


问题答案:

你可以继承DjangoTestSuiteRunner的子类,并覆盖setup_databases和teardown_databases方法以进行传递。

创建一个新的设置文件,并将TEST_RUNNER设置为刚创建的新类。然后,在运行测试时,请使用–settings标志指定新的设置文件。

这是我所做的:

创建一个类似于以下内容的自定义测试服跑步者:

from django.test.simple import DjangoTestSuiteRunner

class NoDbTestRunner(DjangoTestSuiteRunner):
  """ A test runner to test without database creation """

  def setup_databases(self, **kwargs):
    """ Override the database creation defined in parent class """
    pass

  def teardown_databases(self, old_config, **kwargs):
    """ Override the database teardown defined in parent class """
    pass

创建自定义设置:

from mysite.settings import *

# Test runner with no database creation
TEST_RUNNER = 'mysite.scripts.testrunner.NoDbTestRunner'

在运行测试时,将–settings标志设置为新的设置文件,如下所示运行它:

python manage.py test myapp --settings='no_db_settings'

由于Django的1.8,该模块被移动到。django.test.simple.DjangoTestSuiteRunner 'django.test.runner.DiscoverRunner'



 类似资料:
  • 问题内容: 我希望在编写用于测试某些数据库条目的单元测试中获得一些建议。 如果找不到记录,则我正在测试的功能会将数据库作为种子。 我似乎不太了解如何进行len测试。我正在使用测试数据库,因此我可以在任何时候都对其进行核对,因此,如果我只需要在函数上强制使用一个空的数据库,就没有问题了。 该函数本身可以正常工作,我只想确保已覆盖该函数。 任何建议都很好。 谢谢! 问题答案: 确实取决于您,有很多方法

  • 问题内容: 我开始采用TDD开发态度,并为django应用程序编写单元测试。我知道固定装置,并且知道应该执行测试的方式,但是对于给定的测试,我确实需要在整个数据库上执行它,而我想处理的10百万以上行数据库的json固定装置,此外,此测试是“只读”的。 因此,问题是如何设置测试套件以在生产数据库上运行?我想这就像在某些测试的setUp方法中添加DATABASE_NAME设置一样容易。但是运行测试时,

  • 问题内容: 现在一段时间以来,我的单元测试花费的时间比预期的长。我已经尝试调试了几次,但是没有成功,因为延迟是在我的测试甚至开始运行之前。这影响了我在远程测试驱动开发附近做任何事情的能力(也许我的期望太高了),所以我想看看我是否可以一劳永逸地解决这个问题。 运行测试时,测试的开始与实际开始之间会有70到80秒的延迟。例如,如果我针对一个小模块运行测试(使用),我得到 1m:21中的大约1m18位于

  • 是否可以在没有数据库连接的情况下运行我的测试?如果是,我做错了什么/错过了什么?

  • 我的类有一个方法,它尝试执行一些操作,并在所有操作完成后返回nano时间。当测试这个方法时,我遇到了一个问题,测试结果总是不同的(因为取决于当前时间)。 如何正确测试返回值?没有PowerMock有办法吗? 示例类: 示例测试: 感谢您的回答!

  • 令我惊讶的是,我还没有发现其他地方问过这个问题。简而言之,我正在写一个应用程序,我计划部署到云(可能使用Heroku),它将进行各种网络抓取和数据采集。它将在云中的原因是,这样我就可以将它设置为每天独立运行,并在我的计算机不开机的情况下将数据拉至其数据库,同时团队的其他成员也可以访问数据。 我曾经使用AWS的SimpleDB和DynamoDB,但是我发现SDB的存储限制很小,DDB糟糕的查询能力是