我正在用Python编写一个需要大量使用文件系统操作的项目,包括更改文件的所有权。这意味着我需要查询passwd和group数据库,以便在用户/组和数字uid / gids的字符串表示之间进行转换。
我想编写单元测试来覆盖将处理文件系统操作的模块。但是,我没有看到任何保证用户名/组名/ uid / gids在测试时将在passwd和group数据库中的方法。
我想通过在单元测试中模拟pwd
和grp
模块来解决这个问题,但是,这意味着我的单元测试将紧密耦合到我的模块的实现。我不想关心我的模块是否使用pwd
和grp
模块。
如何编写单元测试,以便我的模块认为它可以运行chown操作,这需要将用户映射到uid和group到gid,而不管passwd和group数据库的实际内容是什么?
(关于文件系统操作的单元测试,这里有一个单独但相似的问题,但我相信已有SO question或two或three或{{ 3}}关于这个主题,所以我不会在这里再问一遍 - 不幸的是,给出的大多数答案都依赖于模拟os
模块,从而耦合测试和实现。)