如何针对使用QDesktopServices openUrl的代码编写单元测试?

时间:2017-10-03 12:10:10

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

我正在使用PyQt5 GUI的python(3.5)程序。在GUI中,我需要添加一些帮助链接到网站上的文档。我设法使其成功:

QDesktopServices.openUrl(QUrl("my_url"))

它工作正常,但我想确保它始终如此。

快速而脏的单元测试是调用该函数,只是注意到没有错误。我想做一个测试,检查是否显示了正确的网页。我该怎么用?

1 个答案:

答案 0 :(得分:0)

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

  

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

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