Python Web中使用的测试模板和变量
我正在使用下面的代码测试MainHandlerPython Web中使用的测试模板和变量,python,unit-testing,tornado,Python,Unit Testing,Tornado,我正在使用下面的代码测试MainHandler import tornado.httpserver import tornado.httpclient import tornado.ioloop import tornado.web import unittest class MainHandler(tornado.web.RequestHandler): def get(self): kwargs = {'name' : 'world'}
import tornado.httpserver
import tornado.httpclient
import tornado.ioloop
import tornado.web
import unittest
class MainHandler(tornado.web.RequestHandler):
def get(self):
kwargs = {'name' : 'world'}
self.render('template.html', **kwargs)
class TestTornadoWeb(unittest.TestCase):
http_server = None response = None
def setUp(self):
application = tornado.web.Application([
(r'/', MainHandler),
])
self.http_server = tornado.httpserver.HTTPServer(application)
self.http_server.listen(8888)
def tearDown(self):
self.http_server.stop()
def handle_request(self, response):
self.response = response
tornado.ioloop.IOLoop.instance().stop()
def testHelloWorldHandler(self):
http_client = tornado.httpclient.AsyncHTTPClient()
http_client.fetch('http://localhost:8888/', self.handle_request)
tornado.ioloop.IOLoop.instance().start()
self.failIf(self.response.error)
self.assertEqual(self.response.body, 'Hello, world')
if __name__ == '__main__':
unittest.main()
template.html:
Hello, {{name}}
我想测试模板及其变量。如何测试名称是否正确接收?
有一些属性我可以用来做断言,或者应该用另一种方式来做?这基本上就是您在断言中已经做过的事情。由于客户端实例正在提取渲染模板,因此无法匹配模板变量。通过在模板中使用您的KWARG,它将这些KWARG呈现到模板中-其中{{name}}是“world”(预期输出),您的模板变量已被接收并呈现 如果您需要测试特定的输出,一个相当不雅观的解决方案可能是为每个变量分配一个无意义的
标记(即{{name}}
),然后使用assertIn
方法(即self.assertIn(self.response.body,'world')
)来测试正确的输出