首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >升级到最新moto版本后测试中断(1.3.15和1.3.16)

升级到最新moto版本后测试中断(1.3.15和1.3.16)
EN

Stack Overflow用户
提问于 2020-12-16 09:55:28
回答 2查看 570关注 0票数 2

将moto从1.3.14版本更新到1.3.15/1.3.16会中断抛出异常的测试。

即使仅使用注释,它也会引发错误。

我使用这个requiriments.txt文件:

代码语言:javascript
复制
moto==1.3.16

此测试示例适用于moto 1.3.14,但它不适用于较新的版本:

代码语言:javascript
复制
from moto import mock_s3
import unittest

@mock_s3
class TestStringMethods(unittest.TestCase):

    def test_upper(self):
        self.assertEqual('foo'.upper(), 'FOO')


if __name__ == '__main__':
    unittest.main()

这是执行python3 -m unittest mytest.py时的错误

代码语言:javascript
复制
(venv) ~/p/mocotest $ python3 -m unittest mytest.py
ETraceback (most recent call last):
  File "/usr/lib/python3.8/runpy.py", line 194, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/usr/lib/python3.8/runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "/usr/lib/python3.8/unittest/__main__.py", line 18, in <module>
    main(module=None)
  File "/usr/lib/python3.8/unittest/main.py", line 101, in __init__
    self.runTests()
  File "/usr/lib/python3.8/unittest/main.py", line 271, in runTests
    self.result = testRunner.run(self.test)
  File "/usr/lib/python3.8/unittest/runner.py", line 176, in run
    test(result)
  File "/usr/lib/python3.8/unittest/suite.py", line 84, in __call__
    return self.run(*args, **kwds)
  File "/usr/lib/python3.8/unittest/suite.py", line 122, in run
    test(result)
  File "/usr/lib/python3.8/unittest/suite.py", line 84, in __call__
    return self.run(*args, **kwds)
  File "/usr/lib/python3.8/unittest/suite.py", line 122, in run
    test(result)
  File "/usr/lib/python3.8/unittest/suite.py", line 84, in __call__
    return self.run(*args, **kwds)
  File "/usr/lib/python3.8/unittest/suite.py", line 122, in run
    test(result)
  File "/usr/lib/python3.8/unittest/case.py", line 736, in __call__
    return self.run(*args, **kwds)
  File "/home/cerveraa/projects/mocotest/venv/lib/python3.8/site-packages/moto/core/models.py", line 102, in wrapper
    self.stop()
  File "/home/cerveraa/projects/mocotest/venv/lib/python3.8/site-packages/moto/core/models.py", line 86, in stop
    self.default_session_mock.stop()
  File "/home/cerveraa/projects/mocotest/venv/lib/python3.8/site-packages/mock/mock.py", line 1563, in stop
    return self.__exit__(None, None, None)
  File "/home/cerveraa/projects/mocotest/venv/lib/python3.8/site-packages/mock/mock.py", line 1529, in __exit__
    if self.is_local and self.temp_original is not DEFAULT:
AttributeError: '_patch' object has no attribute 'is_local'

版本:

  • Python 3.8.5
  • pip 20.0.2

有什么建议吗?

注1:为了进行测试,我使用了一个干净的新venv环境,唯一安装的库是moto

注2:使用1.3.14很好,但在安装依赖项时会发出警告:

代码语言:javascript
复制
ERROR: python-jose 3.2.0 has requirement ecdsa<0.15, but you'll have ecdsa 0.16.1 which is incompatible
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-02-09 05:47:56

这是libraries

  • Using与
  • 的兼容问题,moto==1.3.16和模拟版本mock==4.0.2为我解决了这个问题。
票数 5
EN

Stack Overflow用户

发布于 2021-01-09 23:40:18

同样的问题。moto模型的补丁特性会影响模拟的趣味性。

(变通):受影响的评论行

代码语言:javascript
复制
def __exit__(self, *exc_info):
        """Undo the patch."""
        #if self.is_local and self.temp_original is not DEFAULT:
        #    setattr(self.target, self.attribute, self.temp_original)
        #else:
        #    delattr(self.target, self.attribute)
        #    if not self.create and (not hasattr(self.target, self.attribute) or
        #                self.attribute in ('__doc__', '__module__',
        #                                   '__defaults__', '__annotations__',
        #                                   '__kwdefaults__')):
        #        # needed for proxy objects like django settings
        #        setattr(self.target, self.attribute, self.temp_original)

        #del self.temp_original
        #del self.is_local
        #del self.target
        exit_stack = self._exit_stack
        #del self._exit_stack
        return exit_stack.__exit__(*exc_info)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65320952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档