0
我想測試我的Python Flask應用程序的登錄功能。登錄測試在Python中失敗Flask單元測試
我創建一個用戶並將它們添加到test_adduser()
測試中的數據庫中,並且傳遞正常。但是,test_login()
測試失敗並出現斷言錯誤。我已經調試了代碼,並且測試加載了登錄頁面,因此我知道問題不在應用程序或路由等方面),但它不會登錄並重定向用戶。
我意識到這個帖子在描述上有點短,即錯誤跟蹤,但是錯誤實際上是「AssertionError」。
也許我正在做一些明顯錯誤的事情,比如我將用戶憑據傳遞給測試的方式,並且有人可以向我指出這一點?
謝謝!
from flask.ext.testing import TestCase
from flask import Flask
from Shares import db, app as appy
from Shares.models import User
import manage
class test(TestCase):
def create_app(self):
app = Flask(__name__)
app.config['TESTING'] = True
return appy
SQLALCHEMY_DATABASE_URI = "sqlite://"
TESTING = True
def setUp(self):
manage.initdb()
#print self.login('lucas', 'test').data
def tearDown(self):
db.session.remove()
db.drop_all()
def login(self, username, password):
return self.client.post('/login', data=dict(
username=username,
password=password
), follow_redirects=True)
def logout(self):
return self.client.get('/logout', follow_redirects=True)
def test_adduser(self):
lucas=User(username="lucas", email="[email protected]", password="test")
user2 = User(username="lucas", email="[email protected]")
db.session.add(lucas)
db.session.commit()
assert lucas in db.session
assert user2 not in db.session
def test_login(self):
lucas=User(username="lucas", email="[email protected]", password="test")
db.session.add(lucas)
rv = self.login('lucas', 'test')
assert 'Welcome' in rv.data
您在測試之間重置您的數據庫。除非'manage.initdb'插入一個用戶,否則你沒有用戶登錄'test_login'。 – dirn
謝謝,manage.initdb確實添加了一個用戶,但我已經在這裏編輯了代碼來澄清這一點。 –
如果'manage.initdb'在'test_login'中添加了一個與用戶匹配的用戶,'test_adduser'應該違反用戶名限制。另外,'test_adduser'實際上不會測試你的應用程序;它測試SQLAlchemy。 SQLAlchemy有它自己的測試。您不需要將其作爲測試套件的一部分進行測試。 – dirn