我正在使用 Flask 创建应用程序,并且正在使用 SQLAclhemy 。
我目前正在编写一些单元/集成测试,我想知道在 python 中将数据添加到内存数据库时的最佳实践是什么?在文件中运行测试之前是否应该执行 SQL 脚本?我应该在测试过程中执行SQL吗?
例如,让我们看看我的 test_auth.py 文件中的注册方法测试(有注册方法和登录方法):
def test_register(client):
data = {
"username" : "test_user",
"password" : "test_password"
}
response = client.post(f'{AUTH_ROUTE}register', json=data)
assert response.status_code == 201
assert response.get_json() == {'message': 'User created successfully'}
with client.application.app_context():
user = User.query.filter_by(username='test_user').first()
assert user is not None
assert user.username == 'test_user'
assert user.password == 'test_password'
def test_register_user_already_exist(client):
with client.application.app_context():
existing_user = User(username='test_user', password='password')
db.session.add(existing_user)
db.session.commit()
data = {
"username" : "test_user",
"password" : "test_password"
}
response = client.post(f'{AUTH_ROUTE}register', json=data)
assert response.status_code == 400
我正在使用 app_context() 编写代码来在我的数据库上执行操作。做事的方法正确吗?我应该删除 SQL 部分并将其放在其他地方吗?
我应该先执行一个脚本来为 test_auth 部分执行 SQL,然后运行所有测试吗?
我将在您的测试脚本中包含任何设置(和拆卸)步骤。这将确保您的测试是可重现的,并且当您更改代码库并测试更改后的代码时,测试将是相同的。
它还确保如果您的代码对数据库进行更改,您的测试始终从相同的数据库状态开始。