我想知道是否有一种方法可以在运行测试时获取Django应用程序的主机名。也就是说,我希望测试能够在本地以及在登台服务器上运行时通过。因此,需要知道http://localhost:<port>
与http://staging.example.com
,因为某些测试会查询特定的URL。
我在模板中找到了有关如何执行此操作的答案,但这无济于事,因为没有response
对象可以检查主机名。
如何在视图/模板之外找到主机名?它存储在Django设置中的某个地方吗?
为什么您需要知道主机名?如果使用测试客户端,那么没有它,测试也可以正常运行。您不需要了解它们所运行的系统的任何信息。
您还可以使用标签标记测试,然后让CI系统运行包含该标签的测试。
LiveServerTestCase基本上与TransactionTestCase相同,但具有一项附加功能:它在安装程序的后台启动实时Django服务器,并在拆卸时将其关闭。这允许使用Django虚拟客户端以外的自动化测试客户端(例如Selenium客户端)来在浏览器中执行一系列功能测试并模拟真实用户的操作。
实时服务器在localhost上侦听,并绑定到端口0,该端口使用操作系统分配的空闲端口。在测试过程中,可以使用
self.live_server_url
访问服务器的URL。
评论中的其他信息:
self.assertContains(response, f'{settings.MEDIA_URL}/default-avatar.svg')
ValueError
。