使用pytest为web.py应用程序编写单元测试

时间:2019-05-03 06:12:47

标签: python unit-testing pytest web.py

我想通过使用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中是否有任何解决方案,例如粘贴和粘贴鼻子中的选项。

1 个答案:

答案 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