测试中的Django主机名

问题描述 投票:0回答:1

我想知道是否有一种方法可以在运行测试时获取Django应用程序的主机名。也就是说,我希望测试能够在本地以及在登台服务器上运行时通过。因此,需要知道http://localhost:<port>http://staging.example.com,因为某些测试会查询特定的URL。

我在模板中找到了有关如何执行此操作的答案,但这无济于事,因为没有response对象可以检查主机名。

如何在视图/模板之外找到主机名?它存储在Django设置中的某个地方吗?

python django hostname
1个回答
1
投票

为什么您需要知道主机名?如果使用测试客户端,那么没有它,测试也可以正常运行。您不需要了解它们所运行的系统的任何信息。

您还可以使用标签标记测试,然后让CI系统运行包含该标签的测试。

最后是LiveServerTestCase

LiveServerTestCase基本上与TransactionTestCase相同,但具有一项附加功能:它在安装程序的后台启动实时Django服务器,并在拆卸时将其关闭。这允许使用Django虚拟客户端以外的自动化测试客户端(例如Selenium客户端)来在浏览器中执行一系列功能测试并模拟真实用户的操作。

实时服务器在localhost上侦听,并绑定到端口0,该端口使用操作系统分配的空闲端口。在测试过程中,可以使用self.live_server_url访问服务器的URL。

评论中的其他信息:

  • 您可以通过测试MEDIA_URL来测试响应中是否存在图像文件的URL:self.assertContains(response, f'{settings.MEDIA_URL}/default-avatar.svg')
  • 您可以通过多种方式测试是否存在上载,但是最简单的方法是检查是否有与FileField相关联的文件对象。如果没有,它将抛出ValueError
© www.soinside.com 2019 - 2024. All rights reserved.