我有一个 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
在浏览器中键入一样执行。