找到一個在函數外導入和運行 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
提交
取消