如何解决在python中模拟在功能外运行命令的脚本
找到了一个脚本,该脚本可以在功能之外导入和运行aws:
$ cat script.py
import boto3
client = boto3.client("ssm")
...
试图像这样嘲笑,但没有成功:
cat test.py
from unittest.mock import patch
@patch("script.boto3")
def test_boto(boto3):
import script
当我使用pytest运行脚本时,我从AWS收到错误消息。
是否可以像这样模拟脚本?
解决方法
仅发现不可能模拟boto3
或像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"
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。