将类中的方法用作生成器是否可接受/ 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) 我们最近从单元测试切换到了 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.patch为unittest.mock.patch,它通过。我认为 pytest-mock 与 unittest.mock 共享相同的 API,所以我很困惑为什么会有差异。
我有一个带有 SD 卡的 USB 复合设备。使用 Python,我需要一种方法来在设备连接时找到 SD 卡的驱动器号。有任何人对此有经验吗?最初它需要在 Windows 中工作,但我最终需要将它移植到 Mac 和 Linux。