Bre*_*bel 4 python qt unit-testing pyqt pyside
我正在尝试测试一个从另一个库中获取“事件”并将它们重新调度为信号/pyqtSignals 的类。
我正在尝试通过以下方式对其进行测试:
但是处理程序永远不会被调用。或者至少在我检查它时它没有被调用。如果我在控制台中逐行运行测试函数的行,则测试成功。
我认为问题是信号在测试功能完成后才得到处理,但如果是这种情况,我将如何测试它们?
这是我如何尝试测试的示例:
from mock import Mock
def test_object():
obj = MyObject()
handler = Mock()
# This connects handler to a Signal/pyqtSignal
obj.connect('event_type', handler)
# This should trigger that signal
obj.do_some_stuff()
# This fails (call_count is 0)
assert handler.call_count = 1
# This will also fail (call_count is 0)
QtCore.QCoreApplication.instance().processEvents()
assert handler.call_count = 1
Run Code Online (Sandbox Code Playgroud)
在等待信号被分派时,您可能需要运行本地事件循环。
由于您似乎在使用 pytest(如果没有,您应该考虑使用!),我建议使用pytest-qt插件。有了它,您可以像这样编写测试:
def test_object(qtbot):
obj = MyObject()
with qtbot.waitSignal(obj.event_type, raising=True):
obj.do_some_stuff()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2783 次 |
| 最近记录: |