DAO层数据交互
- 在dao目录下,创建user_dao.py
用户管理的增删改查
from server import db, app
from util.log_util import Log
from do.user_entity import UserEntity
"""UserDAO类继承UserEntity实体"""
class UserDAO(UserEntity):
def get_user(self, id):
"""
查询指定用户
:return:
"""
user_info = UserDAO.query.filter_by(id=id).first()
Log().info(f"查询单个的内容为:<========{user_info}")
return user_info
def get_all_user(self):
"""
查询所有用户
:return:
"""
user_info = UserDAO.query.all()
Log().info(f"查询多个的内容为:<========{user_info}")
return user_info
def add_user(self,UserEntity):
"""
新增用户
:return:
"""
# 把entity的实体类数据添加到session中
db.session.add(UserEntity)
db.session.commit()
user_id = UserEntity.id
Log().info(f"新增的内容为:<========{UserEntity.id,UserEntity.username,UserEntity.password}")
return user_id
def update_user(self,UserEntity):
"""
更新用户
:param user:
:return:
"""
# 根据ID查询数据
user_info = self.get_user(UserEntity.id)
# 将查询的数据属性重新赋值
user_info.username = UserEntity.username
user_info.password = UserEntity.password
db.session.commit() # 重新提交
# 返回修改用户的ID
user_id = UserEntity.id
Log().info(f"修改的内容为: <======{user_id}")
return user_id
def delete_user(self, id):
"""
删除用户
:param userid:
:return:
"""
user_info = UserDAO.query.filter_by(id=id).first()
Log().info(f"删除的内容为:<========{id}")
db.session.delete(user_info)
db.session.commit()
- 生成单元测试用例
IDE工具默认生成的测试用例是unittest,先把配置改为自动生成的Pytest的用例
选中查询类名->右键->选择generate->Test
选择你的目录,填入class名称和勾选测试文件->点OK
单元测试文件test_user_dao.py是否生成成功
修改测试用例,进行测试
from dao.user_dao import UserDAO
from do.user_entity import UserEntity
class TestUserDao:
def setup(self):
self.userdao = UserDAO()
def test_add_user(self):
user_entity = UserEntity(username='zhangsan' ,password=12345)
self.userdao.add_user(user_entity)
def test_get_user(self):
print(self.userdao.get_user(id=1))
def test_get_all_user(self):
print(self.userdao.get_all_user())
def test_update_user(self):
user_entity = UserEntity(id=1, username='zhaoliu' ,password=98765)
self.userdao.update_user(user_entity)
def test_delete_user(self):
self.userdao.delete_user(id=1)
- 执行测试类TestUserDao:测试新增、修改、删除、查询是否成功,与DB是否一致
结果:单元测试用例执行成功!!!