pytest跳过函数的部分



我有一个函数来处理一些过程,如果失败,那么我使用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秒。

最新更新