我想通过使用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/。然后导入请求模块并使用get方法,并在响应对象中,您可以验证结果。很好。
通过使用粘贴和鼻子,我们还可以根据web.py官方文档来实现此目的。 http://webpy.org/docs/0.3/tutorial。
在pytest中是否有任何解决方案,例如粘贴和粘贴鼻子中的选项。
答案 0 :(得分:1)
是的。实际上,来自web.py食谱Testing with Paste and Nose的代码几乎可以与py.test一起使用,只需删除tick
导入并适当地更新断言即可。
但是,如果您想知道如何以py.test样式编写针对web.py应用程序的测试,它们可能看起来像这样:
nose.tools
随着您将添加更多测试,您可能会将测试应用的创建重构到固定装置中:
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