月關(guān)寶盒
2023-05-23 14:38:17
找到一個(gè)在函數(shù)外導(dǎo)入和運(yùn)行 aws 的腳本:$ cat script.pyimport boto3client = boto3.client("ssm")...試圖像這樣嘲笑,但沒有奏效:cat test.pyfrom unittest.mock import patch@patch("script.boto3")def test_boto(boto3): import script當(dāng)我使用 pytest 運(yùn)行腳本時(shí),我收到來自 AWS 的錯(cuò)誤。是否可以像這樣模擬腳本?
1 回答

青春有我
TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超8個(gè)贊
剛剛發(fā)現(xiàn)不可能模擬boto3or 和整個(gè)模塊os,但是,可以模擬模塊內(nèi)部的函數(shù)。
示例:模擬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"
添加回答
舉報(bào)
0/150
提交
取消