小编Shy*_*der的帖子

产生多个值

我们不能在python生成器函数中产生多个值吗?

例,

In [677]: def gen():
   .....:     for i in range(5):
   .....:         yield i, i+1
   .....:         

In [680]: k1, k2 = gen()
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-680-b21f6543a7e9> in <module>()
----> 1 k1, k2 = a()

ValueError: too many values to unpack
Run Code Online (Sandbox Code Playgroud)

其工作原理如下:

In [678]: b = a()

In [679]: list(b)
Out[679]: [(0, 1), (1, 2), (2, 3), (3, 4), (4, 5)]
Run Code Online (Sandbox Code Playgroud)

即使我这样做也会得到相同的结果:

In [692]: def a():
    for i in range(5):
        yield i
        yield i+1
Run Code Online (Sandbox Code Playgroud)

谢谢.

python

35
推荐指数
3
解决办法
3万
查看次数

修补来自不同模块的多个方法(使用Python模拟)

我模块的结构:

foo: 
  - load()  # from DB


bar:
  - check() # with user
  - take_action() 
Run Code Online (Sandbox Code Playgroud)

我想通过模拟加载和检查来测试take_action(它在执行操作之前基本上加载值并检查用户).

这是嘲笑:

mock_load  = Mock(side_effects=[<>, <>, <>]) # different data sets
mock_check = Mock(return_value=True)  # User approval
Run Code Online (Sandbox Code Playgroud)

我如何使用patch.multiple来实现这一目标?

with patch.multiple(??):
    # proceed to test
    take_action
Run Code Online (Sandbox Code Playgroud)

python unit-testing

7
推荐指数
2
解决办法
1万
查看次数

标签 统计

python ×2

unit-testing ×1