python运行多次当前代码_Python:如何模拟多次调用的异步方法?

你应该设置

side_effect

Mock

side_effect:每当调用Mock时都要调用的函数。请参见“副作用”属性。用于引发异常或动态更改返回值。使用与mock相同的参数调用函数,除非它返回DEFAULT,否则将使用此函数的返回值作为返回值。

code_53856568.py

import asyncio

@asyncio.coroutine

def coroutine_creater(value):

return value

test_code_53856568.py

:

from unittest.mock import Mock

from code_53856568 import coroutine_creater

import pytest

@pytest.mark.asyncio

async def test_test():

def coroutine_creater_side_effect():

return coroutine_creater(5)

my_mock = Mock(side_effect=coroutine_creater_side_effect)

first_call = await my_mock()

second_call = await my_mock()

assert first_call == 5, 'first call failed'

assert second_call == 5, 'second call failed'

单元测试结果和覆盖率报告:

(venv) â python-codelab [master] â¡ coverage run -m pytest /Users/ldu020/workspace/github.com/mrdulin/python-codelab/src/stackoverflow/53856568/test_code_53856568.py && coverage report -m --include="src/*"

===================================================================================================================== test session starts =====================================================================================================================

platform darwin -- Python 3.7.5, pytest-5.3.1, py-1.8.0, pluggy-0.13.1

rootdir: /Users/ldu020/workspace/github.com/mrdulin/python-codelab

plugins: asyncio-0.10.0

collected 1 item

src/stackoverflow/53856568/test_code_53856568.py . [100%]

====================================================================================================================== 1 passed in 0.04s ======================================================================================================================

Name Stmts Miss Cover Missing

--------------------------------------------------------------------------------

src/stackoverflow/53856568/code_53856568.py 3 0 100%

src/stackoverflow/53856568/test_code_53856568.py 11 0 100%

--------------------------------------------------------------------------------

TOTAL

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值