首页 > 解决方案 > 为什么夹具引用无法访问它在单元测试中创建的表?

问题描述

所以我试图创建一个 dynamodb 表来使用 pytest 夹具运行我的测试,如下所示:

@pytest.fixture
def db_resource():
    db_resource = boto3.resource('dynamodb')
    table = db_resource.create_table(
       ...

    return db_resource

然后我像这样将它传递到我的测试中:

@mock_dynamodb2
def test_my_code(db_resource):
   other_func(db_resource)

这会引发一个错误,提示我刚刚创建的表不存在(这是我第一次尝试这样做)。但是,如果我将其更改为生成表的函数,它可以正常工作。

@mock_dynamodb2
def _create_table():
   db_resource = boto3.resource('dynamodb')
    table = db_resource.create_table(
       ...

   return db_resource

并在我的单元测试函数中调用它......

@mock_dynamodb2
def test_my_code():
    db_resource = _create_table()
    other_func(db_resource)

这工作正常。我错过了什么?

标签: pythonpython-3.xpytest

解决方案


推荐阅读