我正在尝试测试一个接受输入的函数,stdin我目前正在测试这样的东西:
cat /usr/share/dict/words | ./spellchecker.py
Run Code Online (Sandbox Code Playgroud)
在测试自动化的名义,有什么方法pyunit可以伪输入raw_input()?
我正在尝试测试模块:
包/模块.py
DATA_PATH = os.path.join(os.path.dirname(__file__), "data")
class SomeClass:
def __init__(self):
self.filename = os.path.join(DATA_PATH, "ABC.txt")
Run Code Online (Sandbox Code Playgroud)
在tests/module_test.py中我正在尝试做
from package import module
@patch("package.module.DATA_PATH", "data_path_here") # doesn't work
class TestSomeClass(unittest.TestCase):
def setUp(self):
module.DATA_PATH = "data_path_here" # doesn't work
self.obj= SomeClass()
@patch("package.module.DATA_PATH", "data_path_here") # doesn't work either
def test_constructor(self):
self.assertEqual(r"data_path_here\ABC.txt", self.obj.filename)
Run Code Online (Sandbox Code Playgroud)
但是 DATA_PATH 仍然没有被模拟出来。我想我尝试了所有可能的选项来模拟它,但它仍然返回原始路径而不是“data_path_here”
我究竟做错了什么?
编辑:它不是在 Python 单元测试框架中修改全局变量的副本, 因为该解决方案不起作用