小编Jul*_*lie的帖子

类中的方法可以是生成器吗?

将类中的方法用作生成器是否可接受/ Pythonic?我找到的所有示例都在函数中显示yield语句,而不是在类中.

这是一个示例工作代码:

class SomeClass(object):
    def first_ten(self):
        for i in range(10):
            yield i

    def test(self):
        for i in self.first_ten():
            print i

SomeClass().test()
Run Code Online (Sandbox Code Playgroud)

python methods generator

8
推荐指数
1
解决办法
5006
查看次数

pytest-mock 补丁上下文管理器在退出时不恢复对象

我们最近从单元测试切换到了 pytest。mocker.patch我在使用上下文管理器时遇到了一个奇怪的问题。考虑以下示例。

模块_a.py

class MyClass:
    def value(self):
        return 10
Run Code Online (Sandbox Code Playgroud)

模块_b.py

import module_a
class AnotherClass:
    def get_value(self):
        return module_a.MyClass().value()
Run Code Online (Sandbox Code Playgroud)

测试模块b.py

from module_b import AnotherClass
def test_main_2(mocker):
    with mocker.patch('module_a.MyClass.value', return_value=20):
        value = AnotherClass().get_value()
        assert value == 20
    value = AnotherClass().get_value()
    assert value == 10
Run Code Online (Sandbox Code Playgroud)

我希望一旦上下文管理器退出,MyClass 的 value method 方法将被恢复(返回值 10),但是测试在第二个断言语句上失败并出现断言错误20 != 10如果我使用完全相同的测试,但替换mocker.patchunittest.mock.patch,它通过。我认为 pytest-mock 与 unittest.mock 共享相同的 API,所以我很困惑为什么会有差异。

python pytest pytest-mock

5
推荐指数
1
解决办法
6489
查看次数

使用 Python 识别 USB 设备的驱动器号

我有一个带有 SD 卡的 USB 复合设备。使用 Python,我需要一种方法来在设备连接时找到 SD 卡的驱动器号。有任何人对此有经验吗?最初它需要在 Windows 中工作,但我最终需要将它移植到 Mac 和 Linux。

python

1
推荐指数
1
解决办法
1970
查看次数

标签 统计

python ×3

generator ×1

methods ×1

pytest ×1

pytest-mock ×1