测试期间的 Django WebServer

Django WebServer During Testing

我正在用 Django 编写一个复杂的 Web 应用程序。有很多组件。特别是两个,是 Django 服务器(我们称之为 Server)和一个为 Server 提供计算服务的 C++ 应用程序服务器(我们称之为 Calculator)。当 Server 想要完成计算时,它会向 Calculator 正在侦听的套接字发送命令。像这样:

{
    "command": "doCalculations"
}

现在,Calculator 可能在不同的时间需要不同的信息来完成它的工作。因此,不是直接将数据传递给命令中的 Calaculator,而是由 Calculator 询问它需要什么。它通过在 Server:

上调用 RESTful API 来实现
https://Server/getStuff?with=arguments

Calculator 然后使用来自此调用的数据进行计算,并用答案响应 Server

当我尝试使用 Djangos 单元测试框架进行单元测试时,问题就开始了。我在测试中设置了一堆数据结构,但是当 Server 调用 Calculator 时,它需要在 REST API 中提供这些数据,以便 Calculator 可以得到什么它需要。问题是 Django 测试框架不会启动网络服务器,如果我手动执行此操作,它会从真实数据库而不是测试用例中读取数据。

有人知道如何 运行 对外部可用数据进行单元测试 people/processes 吗?

我希望这是有道理的...

您需要指定要在测试中加载的装置 class。

https://docs.djangoproject.com/en/1.7/topics/testing/tools/#fixture-loading

class MyTest(TestCase):
    fixtures = ['data.json']

    def setUp(self):
        # do stuff

    def tearDown(self):
        # do stuff

其中 data.json 可以使用 python manage.py dumpdata 检索。

它将以 JSON 格式填充主数据库中的数据。

data.json 应该存在于您正在测试的应用程序的 fixtures 文件夹中。 (如有必要,创建一个)。