我想用線程ping兩個不同的網絡。我能夠得到我想要的迴應,但我想將其轉換爲測試。我有我在下面試過的代碼,但測試運行者說沒有運行測試。代碼如下:使用線程Ping一個網絡並測試它
#!/home/workspace/downloads/Python-2.6.4/python
from threading import Thread
import subprocess, unittest
from Queue import Queue
class TestPing(unittest.TestCase):
num_threads = 4
queue = Queue()
ips = ["10.51.54.100", "10.51.54.122"]
#wraps system ping command
def RunTest(i, q):
"""Pings subnet"""
while True:
ip = q.get()
print "Thread %s: Pinging %s" % (i, ip)
ret = subprocess.call("ping -c 1 %s" % ip,
shell=True,
stdout=open('/dev/null', 'w'),
stderr=subprocess.STDOUT)
if ret == 0:
print "%s: is alive" % ip
assert True
else:
print "%s: did not respond" % ip
assert False
q.task_done()
#Spawn thread pool
for i in range(num_threads):
worker = Thread(target=pinger, args=(i, queue))
worker.setDaemon(True)
worker.start()
#Place work in queue
for ip in ips:
queue.put(ip)
#Wait until worker threads are done to exit
queue.join()
class PingTestSuite(unittest.TestSuite):
def makePingTestSuite():
suite = unittest.TestSuite()
suite.addTest(TestPingMove("TestPing"))
return suite
def suite():
return unittest.makeSuite(TestPing)
if __name__ == '__main__':
unittest.main()
我想測試如果網絡沒有給出迴應,並運行兩個試驗被ping 2個網絡斷言無論真假。有誰知道我出錯的地方嗎?
只是一個nit:你不能ping「一個網絡」。你ping *主機*,而不是整個網絡。除非你正在做一個廣播ping,當然這包括計算響應和你明顯沒有做的事情。 – unwind 2010-01-26 14:55:41