为了账号安全,请及时绑定邮箱和手机立即绑定

在函数外运行命令的python中的模拟脚本

在函数外运行命令的python中的模拟脚本

月关宝盒 2023-05-23 14:38:17
找到一个在函数外导入和运行 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"


查看完整回答
反对 回复 2023-05-23
  • 1 回答
  • 0 关注
  • 113 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信