pytest 夹具_cleanup_data 未打印预期消息(不要运行清理部分)

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

我的 Python 代码中的 pytest 夹具存在问题。夹具应该在清理测试数据后打印一条消息,但该消息没有被打印。我已经检查了代码和与数据库的连接,但我不明白为什么它不起作用。

我正在使用 pytest 来测试与 mysql 数据库交互的 Python 应用程序。我创建了一个夹具来设置和清理数据库中的测试数据。

打印了拆卸但不起作用(f“清理 cab_user_id:{cab_user_id}”)

@pytest.fixture
def setup_data_register_new_user(db_connection):
    def _setup_data(cab_user_id):
        cursor = db_connection.cursor()

        random_mobile = f"+9{random.randint(1000000000, 9999999999)}"
        random_cab_user_id = str(random.randint(1000000000, 9999999999))"

        cursor.execute("""
            UPDATE tbl_user
            SET mobile = %s, cab_user_id = %s
            WHERE cab_user_id = %s
        """, (random_mobile, random_cab_user_id, cab_user_id))
        db_connection.commit()
        # return cab_user_id

    yield _setup_data
    
    print("teardown")
    def _cleanup_data(cab_user_id):
        print(f"Cleaning up for cab_user_id: {cab_user_id}")

        cursor = db_connection.cursor()
        cursor.execute("""
            select * FROM tbl_user 
            WHERE cab_user_id = %s
        """, (cab_user_id,))
        result = cursor.fetchall()
        print("************************", result)
        _cleanup_data(cab_user_id)
python mysql pytest yield
1个回答
0
投票

最后一行的

_cleanup_data(cab_user_id)
调用不应位于
_cleanup_data
函数内。事实上,清理代码根本不需要位于其自己的函数内部,可以直接放在固定装置中的yield语句之后。

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