测试期间的 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
文件夹中。 (如有必要,创建一个)。
我正在用 Django 编写一个复杂的 Web 应用程序。有很多组件。特别是两个,是 Django 服务器(我们称之为 Server
)和一个为 Server
提供计算服务的 C++ 应用程序服务器(我们称之为 Calculator
)。当 Server
想要完成计算时,它会向 Calculator
正在侦听的套接字发送命令。像这样:
{
"command": "doCalculations"
}
现在,Calculator
可能在不同的时间需要不同的信息来完成它的工作。因此,不是直接将数据传递给命令中的 Calaculator
,而是由 Calculator
询问它需要什么。它通过在 Server
:
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
文件夹中。 (如有必要,创建一个)。