我有一个扩展的测试类tornado.testing.AsyncHTTPTestCase
,我正在使用 Nose 运行它的测试方法。每种测试方法都会检查来自被测 Tornado 服务器上 URL 的响应。其中一些请求需要几秒钟才能完成。每个请求都通过多种方法进行测试。
我想避免在测试期间两次发出相同的 HTTP 请求,因为这会显着减慢测试速度。确保每个请求只发出一次的最佳方法是什么?
例子:
class ServerTest(AsyncHTTPTestCase):
def test_endpoint(self):
self.http_client.fetch(self.get_url('/'), self.stop)
response = self.wait()
self.assertTrue(response.code == 200)
def test_endpoint_differently(self):
self.http_client.fetch(self.get_url('/'), self.stop)
response = self.wait()
self.assertTrue(response.body != "")
上述两种测试方法都请求/
端点,速度较慢。我怎样才能让这个请求发生一次(在第一次测试运行之前)并让测试检查缓存的响应?
我已经使用这样的类变量来实现它:
class ServerTest(AsyncHTTPTestCase):
responses = {}
def setUp(self):
if self.responses == {}:
# do http request
responses['/'] = result
但我想知道是否有更清洁的方法来做到这一点(也许使用鼻子)?我已经研究了 unittestsetUpClass
方法,但由于该方法必须是 a @classmethod
,因此测试用例实例的 http 请求实用程序在setUpClass
运行时尚不可用。