在虚拟文件结构中测试我的代码

时间:2017-01-15 19:19:41

标签: python testing pytest

我有一个python实用程序,它在内部使用locate命令。它用它相应的完整文件路径替换文件名。

>>> complete_path('cd baz')
'cd foo/bar/baz'

如何编写与此功能相对应的测试,因为此命令的输出在每个系统上都是可变的?我是否必须在固定的虚拟文件结构中运行此代码,然后使用固定路径断言它的输出?怎么做?

1 个答案:

答案 0 :(得分:1)

我不知道你的函数是什么样的,但如果你使用的是pytest,那么就会这样做:

def test_complete_path(monkeypatch):
    def mockreturn(path):
        return 'cd /abc/def/g'

    monkeypatch.setattr(external_module, 'external_function', mockreturn)
    res = complete_path('cd g')
    assert res == 'cd /abc/def/g'

有关详细信息,请查看http://doc.pytest.org/en/latest/monkeypatch.html