admin管理员组

文章数量:1390519

I want to mock same object with different values but it's not working. I am using unittest mock and pytest

import unittest
from azure.cosmos.exceptions import CosmosResourceExistsError
import pytest
from unittest.mock import patch

@patch('azure.cosmos.CosmosClient', autospec=True)
@pytest.mark.run(order=1)
def test_usage_already_exists(custom_mock_cosmo, mock_sts_session, mock_dynamodb, mock_activation_trns_map):
    print(custom_mock_cosmo)
    mock_container = mock_cosmo_container(custom_mock_cosmo)
    mock_container.read_item.return_value = {"some": "data"}
    mock_container.upsert_item.return_value = {"some": "data"}
    mock_container.create_item.side_effect = CosmosResourceExistsError(409, "Resource already exists")
    # Add debug statement to verify the mock is in place
    print(mock_container.create_item)

    with pytest.raises(CosmosResourceExistsError):
        handle(member, "INSERT", meta_data)



@patch('azure.cosmos.CosmosClient',autospec=True)
@pytest.mark.run(order=2)
def test_your_function1(custom_mock_cosmo,mock_sts_session, mock_dynamodb,mock_activation_trns_map):
    print(custom_mock_cosmo)
    mock_cosmo_container(custom_mock_cosmo).read_item.return_value = {"some": "data"}
    mock_cosmo_container(custom_mock_cosmo).upsert_item.return_value = {"some": "data"}
    handle(member, "INSERT", meta_data)


@patch('azure.cosmos.CosmosClient',autospec=True)
@pytest.mark.run(order=3)
def test_your_function(custom_mock_cosmo,mock_sts_session, mock_dynamodb,mock_activation_trns_map):
    print(custom_mock_cosmo)
    mock_cosmo_container(custom_mock_cosmo).read_item.return_value = {"some": "data"}
    mock_cosmo_container(custom_mock_cosmo).upsert_item.return_value = {"some": "data"}
    handle(member, "REMOVE", meta_data)

for all the cases i am getting exception i stuck with this please provide some inputs ?

本文标签: pythonPytest mock same object with different return valuesStack Overflow