1

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

{
    "command": "doCalculations"
}

现在,Calculator可能在不同的时间需要不同的信息来完成它的工作。因此,与其直接Calaculator在命令中传递数据,Calculator不如询问它需要什么。它通过调用 RESTful API 来做到这一点Server

https://Server/getStuff?with=arguments

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

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

有人知道如何使用提供给外部人员/流程的数据来运行单元测试吗?

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

4

1 回答 1

1

您需要指定要在测试类中加载的夹具。

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您正在测试的应用程序的文件夹中。(如有必要,创建一个)。

于 2015-03-13T04:51:54.587 回答