class Initialization: auth_list = {}
class LogOut(RequestHandler): def post(self): self.set_status(200) token = self.request.headers.get("Token") if token == None: self.set_status(500) else: Initialization.auth_list.pop(token)
@ddt class TestLogOut(AsyncHTTPTestCase): def get_app(self): urls = [ (r"/logout", LogOut) ] return Application(urls, http_client=self.http_client) def tearDown(self): pass @data([[acc1, acc2, acc3], "1", 200, 2]) # """, [[acc1, acc2, acc3], True, "4", 500, 3]""" @unpack def test_log_out(self, auth_list, token, res_status_code, len_res_auth_list): Initialization.auth_list = MagicMock() Initialization.live_time.return_value = auth_list body = None headers = {"Token": token} res = self.fetch('/logout', method='POST', body=body, headers=headers) len_auth_list = len(Initialization.auth_list) # self.assertEqual(res.code, res_status_code) self.assertEqual(len_auth_list, len_res_auth_list)
Как подменить Initialization.auth_list, чтобы при тестировании средствами торнадо библиотека auth_list менялась => Initialization.auth_list.pop(token)
—————————————————————————————————————————–
Короче, средствами AsyncHTTPTestCase без изменения кода не решить, смысл в том, что статический код ( Initialization.auth_list.pop(token) ) необходимо обернуть тогда в метод и уже метод со всей статикой замокать, но появится ошибка 599 в тестах, решается body='{}', а не body = None.
было бы неплохо, если кто-нибудь помог бы именно с юнит тестом интерфейса LogOut через AsyncTestCase, есть ссылка с пример но он не пашет: http://qaru.site/questions/1002008/how-to-write-unit-tests-for-python-tornado-application