我正在为 QGIS ( 2.18.28 版本)开发一个相当大的插件,但我认为该版本没有那么重要),我想用 pytest 进行一些单元测试。
问题是,即使使用正确的解释器,正确的 PYTHONPATH 等,在运行的QGIS环境之外仍然存在一些无法访问的对象。 QSettings 是其中之一,由于我的测试代码使用了保存在其中的设置,因此导致一半的测试失败。
例如,QSettings().value('some/eacom4/MySeacom/path')
将在测试环境中返回空字符串而不是其值(如Pycharm提供的那样)。它不会抛出任何东西,但是其行为仍然不可接受。
如何在QGIS之外访问QSettings?
经典的from qgis.PyQt.QtCore import QSettings
无法正常工作,因此我尝试使用自定义类对其进行模拟,并且在测试代码中可以正常使用,但是如果没有测试代码就无法访问修改它。但是,我想为测试变通办法尽可能少地修改经过测试的代码,并确保它在生产环境中仍能正常运行(也称为真正的 QSettings )。
有人在QGIS插件上进行过测试并且遇到相同的问题吗? 如果是这样,我将很高兴发现您提出的解决方案。