我希望尝试遵循TDD实践编写代码。我想基于Python的tornado框架创建简单的应用程序。我在网上查找了人们如何为tornado编写测试,并发现了类似于这样的内容:
class TestSomeHandler(AsyncHTTPTestCase):
def test_success(self):
response = self.fetch('/something')
self.assertEqual(response.code, 200)
如果我错了,请纠正我,但这更像是集成测试。相反,我正在尝试为一些虚拟处理程序编写简单的单元测试,例如:
class SomeHandler(BaseHandler):
@gen.coroutine
def get(self):
try:
from_date = self.get_query_argument("from", default=None)
datetime.datetime.strptime(from_date, '%Y-%m-%d')
except ValueError:
raise ValueError("Incorrect argument value for from_date = %s, should be YYYY-MM-DD" % from_date)
测试如下:
class TestSomeHandler(AsyncHTTPTestCase):
def test_no_from_date_param(self):
handler = SomeHandler()
with self.assertRaises(ValueError):
handler.get()
我知道我错过了get()
应用程序和请求。还不知道如何创建它们。
但我的问题是,人们是否像第一个例子中那样为tornado编写测试,还是有人在应用程序内调用处理程序?要遵循哪种模式?如果有人有相关的代码共享,那就太好了。
HTTPRequest
中没有uri
。第一个参数应该是url
。https://www.tornadoweb.org/en/stable/httpclient.html#request-objects - NuclearPeon