我使用squish来测试qt应用程序。问题是挤压不支持线程:
http://kb.froglogic.com/display/KB/Article+-+Using+Threads+in+Python
但是,我需要使用线程,因为我需要通过tcp定期与被测应用程序通信。
我有一个脚本,它在主线程中执行以下操作:
squishtest.waitForObject(":My_Button")
squishtest.waitForObject(":My_Button")
这些挤压命令将关闭两个在启动应用程序时弹出的对话框。虽然每个squish命令都在执行,但我确实注意到所有的tcp线程(threading.Thread)都被阻塞,直到squish命令返回。如果以这种方式阻塞线程,我无法测试正在测试的应用程序。 因此我觉得我可以使用多处理模块来解决这个问题,所以我尝试了:
p = Process(target = squishtest.waitForObject, args = (":My_Button",))
p.start()
p.join()
但是当我尝试时这很好用:
p = Process(target = squishtest.waitForObject, args = (":My_Button",))
p.start()
p.join()
p = Process(target = squishtest.waitForObject, args = (":My_Button",))
p.start()
p.join()
我看到在执行python的命令行输出以下文本:
RemoteInspector(0x0x8702b28)::type: Invalid class id 493 for appid 156850424
这是什么意思?
然后我为了它而尝试了这个:
p = Process(target = squishtest.waitForObject, args = (":My_Button",))
p.start()
p.join()
squishtest.waitForObject(":My_Button")
这次我也从python中获得了一个coredump:
RemoteInspector(0x0x81b5ac8)::type: Invalid class id 493 for appid 156850440
Aborted (core dumped)
这里的问题可能是什么?我的方法是解决这样一个事实,即挤压阻塞我的线程是明智的吗?你能提出另一种方法吗?
我正在使用python 2.6。