2

我有一个 django 应用程序,它使用自定义中间件模块在所有请求中创建子域属性。该属性被分配了一个字符串。在系统测试期间一切正常,但我想对此属性运行自动化测试,所以我的问题是:

在单元测试期间生成请求时,如何将 request.subdomain 设置为字符串值以便测试代码?我是否需要创建自定义请求,然后将其提供给测试客户端?谢谢你的时间。

解决方案如下

自定义中间件读取 HTTP_HOST 字符串并将子域保存在属性 request.subdomain 中。我的问题是如何在单元测试期间将子域请求喷射到客户端。就是这样:

测试客户端对象允许您在 request.META 字典中预设任何键:值对。运行测试时,如果要将主机名设置为子域,请执行以下操作:

host = 'subdomain1.test.com:8000' 
c = Client(HTTP_HOST=host)
response = c.get(path='/home')

并且测试将像有人subdomain1.test.com:8000/home在浏览器中键入一样执行。

4

1 回答 1

1

所有中间件在测试期间正常工作。因此,您可以测试整个视图(并检查它是否返回特定于您的请求的内容) - 这是功能测试。或者您可以创建一个MockRequest并将其直接传递给您的中间件process_request- 它是单元测试。实际上,我会同时使用两者。

于 2012-04-18T03:31:46.083 回答