gpt4 book ai didi

python - 运行 WSGI 应用程序功能测试的最佳方式?

转载 作者:太空宇宙 更新时间:2023-11-03 23:49:45 25 4
gpt4 key购买 nike

我正在编写一对简单的 WSGI 应用程序来感受一下标准,我已经到了想要测试我的应用程序是否按预期工作的地步。现在,我正试图找出启动和停止托管这些应用程序的服务器的最佳方式。

我的第一个想法是从 wsgiref 启动 SimpleServersetUp 方法中,在 tearDown 方法中关闭它。由于 serve_forever block ,我在单独的 Thread 中完成了这项工作。不幸的是,如果我使用 serve_forever 启动服务器,它所在的辅助线程永远不会死,结果是 threading 没有公开杀死 的方法线程

现在我正在考虑在服务器的 Thread 中使用类似这样的东西作为我的 run 实现:

while keep_going:
httpd.handle_request()

keep_going 是我在 setUp 中设置为 True 并在我的设置中设置为 False 的变量拆解

有没有更好的方法?我希望只使用标准库来编写这些应用程序和测试——这样可以更好地理解我在使用库/框架时抽象出的内容——但这似乎很麻烦。

谢谢。

最佳答案

测试 WSGI 应用程序的最佳方法是 WebTest ,这样就无需为您的应用生成测试服务器。相反,它允许您向 WSGI 应用发出 HTTP 请求,作为对 TestApp 对象的方法调用:

>>> from webtest import TestApp
>>> from myapp import my_wsgi_app
>>> app = TestApp(my_wsgi_app)
>>> res = app.get('/')
>>> res.status
'200 OK'
>>> res.status_int
200
>>> params = {'email': 'foo@example.com', 'password': 'foo', }
>>> res = app.post('/login/', params)
>>> res.status_int
302

我通常有一个基础测试类,它将向我的测试用例添加一个 self.app 属性,该属性指向我正在测试的 WSGI 应用程序的 TestApp 实例.所以我的测试方法最终看起来像这样:

def test_index_page(self):
res = self.app.get('/')
self.failUnlessEqual(res.status_int, 200)

关于python - 运行 WSGI 应用程序功能测试的最佳方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2630843/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com