Python ';烧瓶';对象没有属性';邮政';登录单元测试出错
我正在尝试使用Flask测试来测试我的登录功能。我也在关注这个问题。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
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)