【问题标题】:How can we use Django LiveServerTestCase with Selenium to test https urls我们如何使用 Django LiveServerTestCase 和 Selenium 来测试 https url
【发布时间】:2019-12-02 21:40:00
【问题描述】:

我们的端到端测试使用 Django 的 LiveServerTestCase 和 Selenium。到目前为止,我们只能在不安全的 url 上运行这些。但是,我们使用的一些库(Square)要求页面在 https 上,即使在沙盒模式下也是如此。

当尝试连接到安全 url 时,Selenium/Chrome Webdriver 只会显示标准 SSL 不支持错误:

This site can’t provide a secure connection chezpierre.localtest.me sent an invalid response.
ERR_SSL_PROTOCOL_ERROR

有谁知道是否可以在 LiveServerTestCase 上启用 https?

如果没有,是否有人对此有解决方法?我试图避免在我们的构建盒上运行单独的 https 代理,但似乎这可能是唯一的方法。

【问题讨论】:

  • 您在尝试使用 https 时遇到哪些错误?
  • @mrangry777 我编辑了问题以显示错误。
  • 您有机会试用我的解决方案吗?

标签: python django selenium https automated-tests


【解决方案1】:

经过快速研究,我发现在这个旧代码票https://code.djangoproject.com/ticket/25328 建议的 Django 中这是不可能的

我还发现您可以设置一个隧道来绕过这个问题。但是,这适用于 django 开发服务器。这有点棘手,所以我留下了帖子的链接,因为该方法相当长:

https://www.ianlewis.org/en/testing-https-djangos-development-server

How can I test https connections with Django as easily as I can non-https connections using 'runserver'?

替代 - 我认为更好

还有一种更简单的方法是使用外部包。它为您提供了一个开箱即用的支持 https 的 django 开发服务器。该项目处于活动状态并得到维护

https://github.com/teddziuba/django-sslserver

【讨论】:

  • 感谢您的研究。旧代码票上的好发现。看来短期内不会支持了。我们使用 sslserver 进行本地 ssl 开发,但它没有附带 LiveServerTestCase,因此它不适用于集成测试。我认为我们目前的方法是在运行 LiveServerTestCase 测试时考虑运行本地 https 代理。如果我们让它工作并且看起来合理,我会在这里更新这个问题。
猜你喜欢
  • 2013-01-19
  • 2016-01-16
  • 1970-01-01
  • 2015-12-26
  • 1970-01-01
  • 1970-01-01
  • 2017-10-16
  • 2015-01-05
  • 2019-12-21
相关资源
最近更新 更多