我在单元测试中使用了Side_Effect进行动态模拟. 这就是密码.

// main functionn
from api import get_users_from_api

def get_users(user_ids):
    for user_id in user_ids:
        res = get_users_from_api(user_id)

// test script
def get_dynamic_users_mock(user_id):
    mock_by_user_id = {
        1: {
            "id": 1,
            "first_name": "John",
            "last_name": "Doe",
            ...
        },
        2: {
            "id": 2,
            "first_name": "Jane",
            "last_name": "Smith",
            ...
        },
        ...
    }
    return mock_by_user_id[user_id]

@patch("api.get_users_from_api")
def test_get_users(self, mock_get_users)
    user_ids = [1, 2, 3]
    mock_get_users.side_effect = get_dynamic_users_mock # mock get_users_from_api
    get_users(user_ids) # call main function

我想把test_get_users中的额外参数发送到这个get_dynamic_users_mock函数.

如何做到这一点?

推荐答案

我不确定我是否理解你的意思,但你可以试试这个.

def get_dynamic_users_mock(user_id, extra_parameter):
    mock_by_user_id = {
        1: {
            "id": 1,
            "first_name": "John",
            "last_name": "Doe",
            ...
        },
        2: {
            "id": 2,
            "first_name": "Jane",
            "last_name": "Smith",
            ...
        },
        ...
    }
    
    # do whatever with extra_parameter
    
    return mock_by_user_id[user_id]

@patch("api.get_users_from_api")
def test_get_users(self, mock_get_users)
    user_ids = [1, 2, 3]
    extra_paramter = 'extra'
    mock_get_users.side_effect = lambda user_id: 
        get_dynamic_users_mock(user_id, extra_parameter)
    get_users(user_ids)

Python相关问答推荐

@Property方法上的inspect.getmembers出现意外行为,引发异常

从收件箱中的列中删除html格式

Excel图表-使用openpyxl更改水平轴与Y轴相交的位置(Python)

' osmnx.shortest_track '返回有效源 node 和目标 node 的'无'

我想一列Panadas的Rashrame,这是一个URL,我保存为CSV,可以直接点击

使用NeuralProphet绘制置信区间时出错

如何在图中标记平均点?

使用groupby方法移除公共子字符串

不能使用Gekko方程'

如何启动下载并在不击中磁盘的情况下呈现响应?

在matplotlib中删除子图之间的间隙_mosaic

按条件添加小计列

Python OPCUA,modbus通信代码运行3小时后出现RuntimeError

在任何要保留的字段中添加引号的文件,就像在Pandas 中一样

如果列包含空值,则PANAS查询不起作用

使用pythonminidom过滤XML文件

普洛特利express 发布的人口普查数据失败

如何通过特定导入在类中执行Python代码

try 使用RegEx解析由标识多行文本数据的3行头组成的日志(log)文件

生产者/消费者-Queue.get by list