python - 在 Flask 应用 Nose 测试中检查 Flash 消息

标签 python flask nose nosetests flash-message

在发布到我的 flask 应用程序 url 的不同输入值上,它会闪烁不同的消息,例如'没有输入数据'、'输入无效'、'没有找到记录'、'找到 3 条记录'。

有人可以指导我如何编写 Nose 测试来检查是否显示了正确的闪存消息?我猜 flash 消息首先进入 session ……我们如何在 nose-tests 中检查 session 变量?

谢谢

最佳答案

使用 session['_flashes'] 测试 flashes 的方法对我不起作用,因为在我的例子中,session 对象根本没有 '_flashes' 属性:

with client.session_transaction() as session:
    flash_message = dict(session['_flashes']).get('warning')

KeyError: '_flashes'

这可能是因为我在 Python 3.6.4 中使用的最新版本的 flask 和其他包可能工作方式不同,老实说我不知道​​...

对我有用的是一个简单明了的方法:

def test_flash(self):
    # attempt login with wrong credentials
    response = self.client.post('/authenticate/', data={
        'email': 'bla@gmail.com',
        'password': '1234'
    }, follow_redirects=True)
    self.assertTrue(re.search('Invalid username or password',
                    response.get_data(as_text=True)))

在我的例子中,闪现消息是“无效的用户名或密码”。

我认为它也更容易阅读。希望对遇到类似问题的人有所帮助

关于python - 在 Flask 应用 Nose 测试中检查 Flash 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29508595/

相关文章:

python - 数据类引用同一对象而不是初始化一个新对象

python - 如何尽快找到另一个字符串中的特定字符串?

python - 用 Flask 生成 word 文档?

python - Flask 或 Werkzeug/0.9.4 破坏 POST 数据

python - Scrapy 单元测试

具有覆盖率的 Python Nose 测试不再显示缺失的行

python - 如何在 mac osx 上安装 python 的 pip 包?

python - 是否有更惯用的方法来使用 Python 的 Click 获取参数列表?

python - 从文本文件中删除未知字符

python - 使用 Postgresql 在 Google App Engine 上使用 SQLAlchemy 和 pg8000 KeyError/Broken Pipe