使用 pytest 为 web.py 应用程序编写单元测试
write unit test for web.py application by using pytest
我想使用 pytest 为 web.py 应用程序编写单元测试。如何在 pytest 中调用 web.py 服务。
代码:
import web
urls = (
'/', 'index'
)
app = web.application(urls, globals())
class index:
def GET(self):
return "Hello, world!"
if __name__ == "__main__":
app.run()
可以通过使用python请求模块来完成,当我们运行web.py服务时,它会运行http://localhost:8080/。然后导入requests模块,使用get方法,在response对象中,可以验证结果。没关系。
通过使用 Paste 和 nose,我们也可以根据 web.py 官方文档实现这一点。 http://webpy.org/docs/0.3/tutorial.
pytest有没有类似paste和nose选项的解决方案
是的。实际上,web.py 配方 Testing with Paste and Nose 中的代码几乎可以按原样与 py.test 一起使用,只需删除 nose.tools
导入并适当更新断言。
但是如果您想知道如何以 py.test 风格为 web.py 应用程序编写测试,它们可能如下所示:
from paste.fixture import TestApp
# I assume the code from the question is saved in a file named app.py,
# in the same directory as the tests. From this file I'm importing the variable 'app'
from app import app
def test_index():
middleware = []
test_app = TestApp(app.wsgifunc(*middleware))
r = test_app.get('/')
assert r.status == 200
assert 'Hello, world!' in r
由于您将添加更多测试,因此您可能会将测试应用程序的创建重构为固定装置:
from pytest import fixture # added
from paste.fixture import TestApp
from app import app
def test_index(test_app):
r = test_app.get('/')
assert r.status == 200
assert 'Hello, world!' in r
@fixture()
def test_app():
middleware = []
return TestApp(app.wsgifunc(*middleware))
我想使用 pytest 为 web.py 应用程序编写单元测试。如何在 pytest 中调用 web.py 服务。
代码:
import web
urls = (
'/', 'index'
)
app = web.application(urls, globals())
class index:
def GET(self):
return "Hello, world!"
if __name__ == "__main__":
app.run()
可以通过使用python请求模块来完成,当我们运行web.py服务时,它会运行http://localhost:8080/。然后导入requests模块,使用get方法,在response对象中,可以验证结果。没关系。
通过使用 Paste 和 nose,我们也可以根据 web.py 官方文档实现这一点。 http://webpy.org/docs/0.3/tutorial.
pytest有没有类似paste和nose选项的解决方案
是的。实际上,web.py 配方 Testing with Paste and Nose 中的代码几乎可以按原样与 py.test 一起使用,只需删除 nose.tools
导入并适当更新断言。
但是如果您想知道如何以 py.test 风格为 web.py 应用程序编写测试,它们可能如下所示:
from paste.fixture import TestApp
# I assume the code from the question is saved in a file named app.py,
# in the same directory as the tests. From this file I'm importing the variable 'app'
from app import app
def test_index():
middleware = []
test_app = TestApp(app.wsgifunc(*middleware))
r = test_app.get('/')
assert r.status == 200
assert 'Hello, world!' in r
由于您将添加更多测试,因此您可能会将测试应用程序的创建重构为固定装置:
from pytest import fixture # added
from paste.fixture import TestApp
from app import app
def test_index(test_app):
r = test_app.get('/')
assert r.status == 200
assert 'Hello, world!' in r
@fixture()
def test_app():
middleware = []
return TestApp(app.wsgifunc(*middleware))