程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何从python3中的另一个模块模拟变量?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决如何从python3中的另一个模块模拟变量??

开发过程中遇到如何从python3中的另一个模块模拟变量?的问题如何解决?下面主要结合日常开发的经验,给出你关于如何从python3中的另一个模块模拟变量?的解决方法建议,希望对你解决如何从python3中的另一个模块模拟变量?有所启发或帮助;

下面是我的源代码

#src.py
from common.configs import MANDATORY_FIELDS

def check_mf():
   if set(MANDATORY_FIELDS).issubset(['a','b','c']):
      return True
   else:
      raise Exception("Error in mandatory fIElds")

这是我的测试代码

#test_src.py
from unittest import TESTCase,main,mock
from src import check_mf

class TestMailSenderUtil(TESTCasE):
  def test_R_20_11845@ethod(self):
      with mock.patch('src.MANDATORY_FIELDS') as mocked_mf:
           mocked_mf.return_value = ['a','c','d']
           self.asserTraises(ValIDationException,check_mf)

当我运行此代码时,测试未通过。它抛出一个错误说

AssertionError: ValIDationException not raised by check_mf

为什么会出现这个错误? 仅供参,当我在运行单元测试时尝试在 src.py 文件中打印 MANDATORY_FIELDS 时,我得到了这个

<Magicmock name='MANDATORY_FIELDS' ID='139766761401144'>

为什么嘲笑在这里不起作用?

解决方法

变量 return_value 没有 @H_993_5@mANDATORY_FIELDS。只需将 new 值作为

如何从python3中的另一个模块模拟变量?

的第二个参数传递。

例如(Python 3.9.2)

src.py

from configs import MANDATORY_FIELDS

class ValidationException(Exception):
    pass

def check_mf():
    print(MANDATORY_FIELDS)
    if set(MANDATORY_FIELDS).issubset(['a','b','c']):
        return True
    else:
        raise ValidationException("Error in mandatory fields")

configs.py

@H_993_5@mANDATORY_FIELDS=['a']

test_src.py

from unittest import TESTCase,main,mock
from src import check_mf,ValidationException


class TestMailSenderUtil(TESTCasE):
    def test_R_20_11845@ethod(self):
        with mock.patch('src.MANDATORY_FIELDS',['a','c','d']) as mocked_mf:
            self.asserTraises(ValidationException,check_mf)


if __name__ == '__main__':
    main()

单元测试结果:

['a','d']
.
----------------------------------------------------------------------
Ran 1 test in 0.000s

OK
Name                                     Stmts   Miss  Cover   Missing
----------------------------------------------------------------------
src/stackoverflow/68162471/configs.py        1      0   100%
src/stackoverflow/68162471/src.py            8      1    88%   9
src/stackoverflow/68162471/test_src.py       8      0   100%
----------------------------------------------------------------------
@R_841_10586@L                                       17      1    94%

大佬总结

以上是大佬教程为你收集整理的如何从python3中的另一个模块模拟变量?全部内容,希望文章能够帮你解决如何从python3中的另一个模块模拟变量?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。