相关疑难解决方法(0)

如何模拟pyun的stdin输入?

我正在尝试测试一个接受输入的函数,stdin我目前正在测试这样的东西:

cat /usr/share/dict/words | ./spellchecker.py
Run Code Online (Sandbox Code Playgroud)

在测试自动化的名义,有什么方法pyunit可以伪输入raw_input()

python linux python-unittest

18
推荐指数
2
解决办法
2万
查看次数

不能在 Python 单元测试中猴子补丁模块变量

我正在尝试测试模块:

包/模块.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 单元测试框架修改全局变量的副本, 因为该解决方案不起作用

python unit-testing monkeypatching mocking

5
推荐指数
2
解决办法
2457
查看次数