简单的session值功能测试失败

问题描述 投票:0回答:1

我有以下功能:

def do_login(user):
    """Log in user."""

    session[CURR_USER_KEY] = user.id

以及以下测试:

    def test_do_login(self):
        """Does do_login function work?"""
        with app.test_request_context():
            with self.client as c:
                with c.session_transaction() as session:
                    do_login(self.testuser)

                    self.assertEqual(session[CURR_USER_KEY], self.testuser.id)

测试抛出 KeyError 失败,因为会话中没有与 CURR_USER_KEY 对应的值。该功能是如此简单,我什至不知道从哪里开始解决这个错误。显然,我理解错误的含义,但我不明白为什么调用函数时函数中的单行不会运行。有什么想法吗?

我尝试打印会话。它完全是空的。我尝试移动请求上下文、客户端和会话行,但无济于事。

python session python-unittest
1个回答
0
投票

您的测试尝试访问

session[CURR_USER_KEY]
两次:一次在
do_login
中,一次在对
self.assertEqual
的调用中。如果密钥不存在,则
do_login
会引发异常。

如果这是预期的行为,您应该使用

self.assertRaises
来执行该函数,以便可以测试
KeyError
是否确实被引发。

def test_do_login(self):
    """Does do_login function work?"""
    with app.test_request_context():
        with self.client as c:
            with c.session_transaction() as session:
                with self.assertRaises(KeyError):
                    do_login(self.testuser)

如果这不是预期的行为,并且do_login

应该向会话中
添加一个条目,以便

self.assertEqual(session[CURR_USER_KEY], self.testuser.id)
会成功,那么你就发现了

do_login

中的一个错误需要修复。

© www.soinside.com 2019 - 2024. All rights reserved.