找到一个在函数外导入和运行 aws 的脚本:$ cat script.pyimport boto3client = boto3.client("ssm")...试图像这样嘲笑,但没有奏效:cat test.pyfrom unittest.mock import patch@patch("script.boto3")def test_boto(boto3): import script当我使用 pytest 运行脚本时,我收到来自 AWS 的错误。是否可以像这样模拟脚本?
1 回答
青春有我
TA贡献1784条经验 获得超8个赞
刚刚发现不可能模拟boto3or 和整个模块os,但是,可以模拟模块内部的函数。
示例:模拟boto3.client
script.py
import boto3
client = boto3.client("ssm")
test.py
from unittest.mock import patch, MagicMock
@patch("boto3.client")
def test_boto(boto3):
import script
assert isinstance(script.client, MagicMock)
嘲讽os.environ:
script.py
import os
test.py
from unittest.mock import patch
@patch("os.environ", {"TEST_ENV": "TEST"})
def test_environ():
import script
assert script.os.environ["TEST_ENV"] == "TEST"
添加回答
举报
0/150
提交
取消