Open Mrodent opened 7 months ago
Looks like they have been marked as such ever since they were introduced some 11 years ago in de0b795bec8f68b527ee0019cf86e497ec09d5d2.
While they are originally static in Qt (on the QTest
object), that doesn't really translate over to pytest-qt. There, qtbot.keyEvent(...)
is indeed the proper way to use them. Maybe the signatures were just copied 1:1 from PyQt/PySide at the time, and this was an oversight?
As an aside, if you get AttributeError: type object 'MagicMock' has no attribute 'keyEvent'
, you're dealing with something from unittest.mock
and not the qtbot
object. It sounds like you might be using the @unittest.mock.patch
decorator incorrectly, and would recommend you use pytest-mock instead, and use its mocker
fixture, to avoid this kind of subtle issue.
As for keyPress
/ keyEvent
: keyPress(...)
is just a shorthand to say keyEvent(QTest.KeyAction.Press, ...)
.
(Reopening this as I think the doc bug is legit)
First, thanks for this test package, it's a life-saver.
I've been using it for some time now. I just want to simulate pressing of "Enter" on a QLineEdit (for example). There don't seem to be many examples of this kind of thing out there.
In the documentation here we see that something like
keyPress
orkeyEvent
is said to bestatic
. (By the way that page appears to listkeyPress
twice, for no particular reason).I am currently experimenting with this by going
qtbot.keyEvent(...)
. This appears to work OK. But if that method isstatic
, shouldn't I be using the class instead? If I tryqtbot.__class__.keyEvent(...)
I get this error:Also, as a general rule, which should I be using,
keyPress
orkeyEvent
? Or doesn't it matter.