【问题标题】:How can I write unit tests against code that uses QDesktopServices openUrl?如何针对使用 QDesktopServices openUrl 的代码编写单元测试?
【发布时间】:2017-10-03 12:10:09
【问题描述】:

我正在开发一个使用 PyQt5 GUI 的 python (3.5) 程序。在 GUI 中,我需要在网站上的文档中添加一些帮助链接。我设法使它与:

QDesktopServices.openUrl(QUrl("my_url"))

它工作正常,但我想确保它永远都是这样。

一个快速而肮脏的单元测试是调用该函数并简单地注意到没有错误。我想做一个测试来检查正确的网站页面确实出现了。我应该使用什么?

【问题讨论】:

  • 您找到解决方案了吗?如果它与我的回答不同,我很想知道它是什么。
  • 感谢您的回答。不幸的是,除了“使用其他东西”之外,我没有任何完整的解决方案。无论如何,测试返回值仍然比我所做的更进一步。
  • 好的。既然您发现我的回答有些用处,您介意将其标记为已接受吗?

标签: python-3.x pyqt5 python-unittest qdesktopservices


【解决方案1】:

检查错误根本不起作用,因为 Qt 本身永远不会引发错误(当然,Python 或 PyQt 可能会这样做,但出于完全不相关的原因)。您可以做的最好的事情是检查openUrl 的返回值,它只会返回TrueFalse,具体取决于它是否“成功”。但请注意来自openUrl 的 Qt 文档中的以下内容:

警告:返回值true表示应用程序有 成功请求操作系统以 外用。外部应用程序可能仍然无法 启动或无法打开请求的 URL。这个结果不会 报告给应用程序。

如果你想要更多的控制,我建议你改用 Python 的 webbrowser 模块。例如,这将允许您 register 您自己的模拟浏览器类进行测试。 webbrowser 模块是用纯 Python 编写的,the code 非常简单。

【讨论】:

    猜你喜欢
    • 2015-03-12
    • 2015-09-06
    • 1970-01-01
    • 2015-03-30
    • 2011-10-11
    • 1970-01-01
    • 2020-06-25
    • 2013-06-02
    相关资源
    最近更新 更多