Python ';烧瓶';对象没有属性';邮政';登录单元测试出错

Python ';烧瓶';对象没有属性';邮政';登录单元测试出错,python,python-2.7,unit-testing,flask,flask-login,Python,Python 2.7,Unit Testing,Flask,Flask Login,我正在尝试使用Flask测试来测试我的登录功能。我也在关注这个问题。test\u login()函数将引发AttributeError:“Flask”对象没有属性“post”。为什么我会犯这个错误 Traceback (most recent call last): File "/home/lucas/PycharmProjects/FYP/Shares/tutorial/steps/test.py", line 57, in test_login_logout rv = self.logi

我正在尝试使用Flask测试来测试我的登录功能。我也在关注这个问题。
test\u login()
函数将引发
AttributeError:“Flask”对象没有属性“post”
。为什么我会犯这个错误

Traceback (most recent call last):
  File "/home/lucas/PycharmProjects/FYP/Shares/tutorial/steps/test.py", line 57, in test_login_logout
rv = self.login('lucas', 'test') <br> <br>
  File "/home/lucas/PycharmProjects/FYP/Shares/tutorial/steps/test.py", line 47, in login
return self.app.post('/login', data=dict(
AttributeError: 'Flask' object has no attribute 'post'
它看起来像是在名为
self.client
的TestCase实例上神奇地设置了一个特殊的应用程序客户端对象。将所有
self.app
更改为
self.client
,它应该可以解决这个问题

例如:

致:


在为我的Flask应用程序编写测试时,我遇到了类似的问题

仅从调试中,我看到没有“config”属性,而我必须转到
self.app.application.config

不知道为什么会丢失它,我通常都会像在生产代码中一样执行
self.app.config

import unittest

from factory import create_app


class ConfigTests(unittest.TestCase):

    def setUp(self):
        app = create_app('flask_test.cfg')
        app.testing = True
        self.app = app.test_client()

    def test_app_is_development(self):
        self.assertFalse(self.app.application.config['SECRET_KEY'] is 'secret_key')
        self.assertTrue(self.app.application.config['DEBUG'] is True)

谢谢@jumbopp,但是我现在有一个断言错误:'(错误是由行rv=self.login('lucas','test')引发的。我的路由有以下定义:@app.route(“/login”,methods=[“GET”,“POST”])def login():有什么想法吗?:)您的实际生产应用程序没有被此测试套件测试。您正在
create\u app
中创建一个完全独立的应用程序,它没有
/login
路径。您需要从存储的任何位置导入生产应用程序,并在
create\u app
方法中返回它。
def login(self, username, password):
    return self.app.post('/login', data=dict(
        username=username,
        password=password
    ), follow_redirects=True)
def login(self, username, password):
        return self.client.post('/login', data=dict(
            username=username,
            password=password
        ), follow_redirects=True)
import unittest

from factory import create_app


class ConfigTests(unittest.TestCase):

    def setUp(self):
        app = create_app('flask_test.cfg')
        app.testing = True
        self.app = app.test_client()

    def test_app_is_development(self):
        self.assertFalse(self.app.application.config['SECRET_KEY'] is 'secret_key')
        self.assertTrue(self.app.application.config['DEBUG'] is True)