我写了一个微小的代理实用程序(TCP端口范围),现在试图对其进行测试。所以我的测试:
def test_forwarding(self):
route = self.config.routes[0]
q = multiprocessing.JoinableQueue()
proc_listen = multiprocessing.Process(
target=lambda q: q.put(str(
subprocess.Popen(["nc", "-l", str(route.sink[1])], stdout=subprocess.PIPE, shell=False).communicate()[0])),
args=(q,))
proc_listen.start()
proc_write = multiprocessing.Process(
target=lambda: subprocess.Popen("nc %s %s < ~/Workshop/port-forwarder/tests/test_data.txt" % route.source,
stdout=subprocess.PIPE, shell=True))
proc_write.start()
proc_write.join(3)
proc_write.terminate()
proc_listen.join(3)
proc_listen.terminate()
q.join()
self.assertEqual(open("test_data.txt", 'r').readline(), q.get())
,但测试卡在get()
呼叫上。完全搞砸了,尝试了所有诸如加入/终止之类的东西。任何帮助将不胜感激。
这是带有资源的GitHub回购:在此处输入链接描述
如果您被get阻止,则可以
-
使用get_nowait()
-
或使用空()检查侧面是否有一些元素。如果不是空的,请跳过