当前位置: 首页 > 面试题库 >

Python模拟中的模拟属性?

闻人望
2023-03-14
问题内容

mock在Python中使用时遇到了一些困难:

def method_under_test():
    r = requests.post("http://localhost/post")

    print r.ok # prints "<MagicMock name='post().ok' id='11111111'>"

    if r.ok:
       return StartResult()
    else:
       raise Exception()

class MethodUnderTestTest(TestCase):

    def test_method_under_test(self):
        with patch('requests.post') as patched_post:
            patched_post.return_value.ok = True

            result = method_under_test()

            self.assertEqual(type(result), StartResult,
                "Failed to return a StartResult.")

测试实际上返回正确的值,但r.ok它是Mock对象,不是True。您如何在Pythonmock库中模拟属性?


问题答案:

您需要使用return_valuePropertyMock

with patch('requests.post') as patched_post:
    type(patched_post.return_value).ok = PropertyMock(return_value=True)

这意味着:调用时requests.post,在该调用的返回值上,PropertyMock为属性设置aok以返回value True



 类似资料:
  • 问题内容: 我正在开发一个Web应用程序,该应用程序显然在iOS设备中存在问题。问题是我不拥有iOS设备,而是在Linux Ubuntu中进行开发。我正在寻找一种在Linux(尤其是浏览器)中仿真/模拟此OS的方法,但是还没有找到任何东西。 到目前为止,我发现的是iOS SDK的Simulator,但这是针对Mac的。还有一些Windows模拟器。有人做过吗? 问题答案: 我能想到的唯一解决方案是

  • 问题内容: 我正在尝试近两个小时,没有任何运气。 我有一个看起来像这样的模块: 稍后在代码中: 有任何想法吗? 编辑: 亚历克斯的建议似乎无效: 运行测试时: 但是,当我从python交互式控制台运行相同的代码时,它 确实 起作用。 更多编辑: 我正在使用一个测试文件,该文件具有特定于我模块这一部分的所有测试。首先,我导入可用的模块,以演示和测试常用用法。缺少软件包被认为是一种极端情况,因此我稍后

  • 问题内容: 我该如何与正在测试的班级中的Mockito其他班级进行模拟? 例如: MyClass.java 任何东西PerformerClass.java 并测试: 我是否可以欺骗以排除不必要的逻辑?我可以重写方法来简单地返回还是? 为什么指定Mockito,因为在Robolectric进行Android测试时需要它。 问题答案: 您可以重构,以便它使用依赖注入。不用让它创建实例,您可以将类的实例

  • 我试图理解如何使用python的unittest框架 我有一段代码,看起来像这样-- 有人能帮我开发unittest模块来测试这个吗?我问这个问题是为了学习如何使用单元测试(我试图学习TTD:测试驱动开发) 到目前为止,我想出了这个...导入单元测试导入os.path 类TestFunctions(unittest.TestCase): 如果name==“main”:unittest。main()

  • 问题内容: 搜索了几个小时后,我想知道是否有可能模拟键盘上的按下按键。例如,我希望我的程序将按键保持5秒钟,因此当我在记事本中运行它时,它看起来像是这样的:。我在互联网上尝试了不同的代码段,到目前为止,我能找到的最好的东西是: Sendkey模块也不能解决我的问题,因为它只允许您发送一次按键,而不发送按住键按下事件。我知道过autoit,它在过去使用过,但是我只是真的想知道python是否可行以及