我正在尝试使用unittest.mock模块来模拟我的sqlalchemy类。我指定了一个返回值,但是当我的测试运行被模拟的查询函数时,它会返回一个Nonetype变量。
这是我的测试。
def TestLoginSuccessful(self):
with mock.patch('CaseLoader_Fl.models.ndems.User') as mocksql:
mocksql.query.filter_by('').first.return_value = ('test_user','test_password')
is_validated = login_controller.validate_user('test_user','test_password')
self.assertTrue(is_validated)
这是我正在测试的功能,print(user)
打印'无'。
def validate_user(username,password):
user = User.query.filter_by(username=username).first()
print(user)
if user:
if user.check_password(password):
return login_user(user)
else:
print('wrong pass')
return False
else:
print('no user')
return False
这是我继承自SQLAlchemy的User类。
class User(export_db.Model):
__bind_key__ = 'ndems'
username = export_db.Column(export_db.String(80), primary_key=True, unique=True)
password = export_db.Column(export_db.String(80))
admin = export_db.Column(export_db.Boolean())
def __init__(self, username, password, admin):
self.username = username
self.password = self.set_password(password)
self.admin = admin
def __repr__(self):
return '<User %r>' % self.username
def set_password(self, password):
return generate_password_hash(password)
def check_password(self, password):
return check_password_hash(self.password, password)
def is_authenticated(self):
return True
def is_active(self):
return True
def is_anonymous(self):
return False
def get_id(self):
return str(self.username)
感谢任何帮助或建议。