测试Python应用程序和SQL脚本

问题描述 投票:0回答:1

我正在使用 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,然后运行所有测试吗?

python sql flask pytest
1个回答
0
投票

我将在您的测试脚本中包含任何设置(和拆卸)步骤。这将确保您的测试是可重现的,并且当您更改代码库并测试更改后的代码时,测试将是相同的。

它还确保如果您的代码对数据库进行更改,您的测试始终从相同的数据库状态开始。

© www.soinside.com 2019 - 2024. All rights reserved.