- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一些这样的功能:
URL = 'http://localhost:8080'
def func():
response = urlopen(URL)
return process(response)
And i want to test it with unittest.
I did something like this:
from wsgiref.simple_server import make_server
def app_200_hello(environ,start_response):
stdout = StringIO('Hello world')
start_response("200 OK", [('Content-Type','text/plain')])
return [stdout.getvalue()]
s = make_server('localhost', 8080, app_200_hello)
class TestFunc(unittest.TestCase):
def setUp(self):
s.handle_request()
def test1(self):
r = func()
assert r, something
if __name__ == '__main__':
unittest.main()
在 setUp() 时,我的测试停止了,因为 s.handle_request() 等待请求。我怎样才能解决这个问题?在另一个线程中运行 s.handle_request()?或者也许还有另一个解决方案?
编辑:我想测试“func”函数,而不是“app_200_hello”
最佳答案
如果您正在测试 WSGI 应用程序,我强烈推荐 werkzeug.test它通过在没有服务器的情况下测试应用程序本身来解决这些问题:
from werkzeug.test import Client
# then in your test case
def test1(self):
client = Client(app_200_hello)
appiter, status, headers = client.open()
assert ''.join(appiter) == 'Hello World'
assert status == '200 OK'
这种方法完全消除了对 WSGI 服务器的需求。
当然,如果您确实想启动服务器,则必须使用单独的线程或进程,但您必须确保事后停止它。但是,令我印象深刻的是,您唯一一次想要使用真实服务器进行测试是为了生产集成测试,在这种情况下,您的服务器将不是 wsgiref,它将是您可能不必启动的真实服务器-像这样停下来。
关于python - 在单元测试中使用 wsgiref.simple_server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/634485/
为了快速了解一些背景知识,我是一名 XHTML/CSS 专家,具有一些基本的 PHP 知识。我正在尝试涉足 Python 池,到目前为止,我了解如何启动 simple_server 并在同一个 .py
我有一些这样的功能: URL = 'http://localhost:8080' def func(): response = urlopen(URL) return process(
我要构建一个简单的 Web 应用程序,我才刚刚开始摆弄 mod_wsgi。在各种教程中,第一个 hello world 应用程序如下所示: def application(environ,start_
在 OSX (darwin) 上使用 Python 2.7.2,我想隐藏或自定义 wsgiref.simple_server.make_server() 发送的“服务器”响应 header 。 我尝试
我正在使用 wsgiref.simple_server 来研究网络服务器的世界。 我想控制生成的日志,但在 Python's documentation 中找不到任何相关信息. 我的代码是这样的: f
我正在寻找一个模块,该模块可为我提供用于本地访问的基本 HTTP 服务器功能。 Python 似乎有两种方法可以在标准库中实现简单的 http 服务器:wsgiref.simple_server和 B
我有一个简单的wsgi程序。 from wsgiref.simple_server import make_server import time def application(environ, st
我有一个恼人的问题。我有这个简单的服务器代码(比方说): #!/usr/bin/env python3 import wsgiref.simple_server def my_func(env, st
这是一个简单的 python wsgi 服务器,打印出 Hello guys!!!在 0.0.0.0:8080 . from wsgiref.simple_server import make_ser
我正在尝试在 Python3 中创建一个 HTTP 服务器。一开始,我只想要一个提供单个 JPG 文件的服务器。这是我的代码: from wsgiref.simple_server import ma
我是一名优秀的程序员,十分优秀!