Уведомления

Группа в Telegram: @pythonsu

#1 Март 4, 2019 08:35:40

Pit
Зарегистрирован: 2018-12-26
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Замокать класc для хранения данных и протестить средствами торнадо

Есть класс:

 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 не подменяется для интерфейса LogOut, по тесту длина Initialization.auth_list должна была уменьшиться до 2, но остается равное 3

Как подменить 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

Отредактировано Pit (Март 5, 2019 08:50:03)

Офлайн

#2 Март 5, 2019 12:34:18

Pit
Зарегистрирован: 2018-12-26
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Замокать класc для хранения данных и протестить средствами торнадо

Pit
Есть класс:
Есть у кого идеи?!

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version