我有一个函数来处理一些过程,如果失败,那么我使用sys.exit(myfun())
来存在代码,但当我使用pytest
进行测试时,我不想在sys.exit((中执行函数myfun()
。在pytest
中有可能跳过myfun((吗?
mypyfile.py
def process():
# do some logic
if failed:
sys.exit(myfun()) # this i dont want to execute if i test via my pytest
def myfun():
print("failed")
test_mypeyfile.py
import pytest
import test_mypyfile
def test_process():
test_mypyfile.process()
您可以在测试中模拟myfunc
。这样,在测试过程中就不会调用函数。我会稍微改变一下你的例子,这样嘲笑更有意义(你会看到区别(:
# mypyfile.py
from time import sleep
def process():
# do some logic
if failed:
sys.exit(myfunc)
def myfun():
sleep(4000)
# test_mypyfile.py
import mock
import mypyfile
def test_process():
mock.patch('mypyfile.myfunc')
test_mypyfile.process()
这里会调用myfunc
,但您不会等待4000秒。