【发布时间】:2019-09-16 09:25:21
【问题描述】:
我在“testing_print”目录下有一个简单的源文件“hello.py”,在“Tests”目录下有一个单元测试用例“test_hello.py”。这两个目录都在“test_hello_files”目录下。
我正在尝试为“hello.py”文件编写一个单元测试用例“test_hello.py”,并为其添加一个模拟来伪造“sample_greet1”函数。
如果我在全局范围内添加模拟,则测试用例通过,但如果模拟在本地定义,则测试用例失败。
hello.py
from import_file import sample_greet1
def greet1():
s = 'hi'
greet=sample_greet1(s)
return greet
test_hello.py
import sys
import pytest
from mock import Mock
impo_class=sys.modules['import_file'] = Mock()
impo_class.sample_greet1 = Mock(return_value = "Prasad") #Test case passes if the mock is here
from testing_print import hello
def test_greet1():
print('impo_class.sample_greet1 ----', impo_class.sample_greet1())
impo_class.sample_greet1 = Mock(return_value = "Prasad") #Test case fails if the mock is here
s = hello.greet1()
assert s == 'Prasad'
我想在函数中本地使用模拟。请让我知道我做错了什么。
【问题讨论】:
标签: python mocking code-coverage pytest