我正在编写一个封装了某个Web服务API的Python模块。这是所有REST,实现起来相对简单。使用SimpleHTTPServer进行单元测试
但是,在单元测试中我发现了一个问题:因为我没有运行我为此模块创建的服务,所以我不想锤击它们,但同时我需要检索数据来运行我的测试。我看着SimpleHTTPServer,这将是确定的。
我解决了部分问题,但现在,因为我似乎无法终止线程,所以在启动测试应用程序时,我多次遇到“地址已在使用中”的问题。
下面是一些示例代码
PORT = 8001
handler = SimpleHTTPServer.SimpleHTTPRequestHandler
httpd = SocketServer.TCPServer(("", PORT), handler)
httpd_thread = threading.Thread(target=httpd.serve_forever)
httpd_thread.setDaemon(True)
httpd_thread.start()
api_data = urllib.urlopen("http://localhost:8001/post/index.json")
print "Data start:"
print json.load(api_data)
其中“index.json”是我做了一个模拟的JSON文件,它替代了真实的东西。程序终止后,我如何优雅地清理事物?
SimpleHTTPServer应该是最简单的方法。你有什么样的问题? – balpha 2009-12-31 12:24:59
我重写了一些东西,我希望现在更清楚。 – Einar 2009-12-31 12:53:20