有一些Python代码可以在Linux下运行。 它以这样的方式使用pwd模块:
import pwd ... def func(): user=pwd.getpwnam(user)[2]
现在我们有一个特定的需求来testing这个代码,testing必须在Windows下运行。 程序本身只能在Linux下运行。 问题是pwd模块在Windows下不可用,所以即使使用Magicmock模拟了pwd函数的实现,被testing的代码也会导致ImportError失败。
解决这个问题的基本思路是在运行testing时隐藏pwd模块。 所以在运行testing的时候,存根会影响pwd,当运行主程序时,会使用原始的(Unix)密码。 我们在testingPYTHONPATH时创build了这样的存根:
# pwd.py def getpwnam(user): print("YESSSSSSSS")
但是它似乎并不影响pwd模块,在debugging器中,我们看到内置的pwd被导入。 我主要是一个Java开发人员,所以我很抱歉,如果做事的方式不是“pythonic”。 想法是受欢迎的。
redirect输出时cd不工作?
将你的pwd.py重命名为其他的,比如winpwd.py 。 然后使用:
try: import pwd except ImportError: import winpwd as pwd
通过这种方式导入pwd ,你将获得Linux上的内置pwd ,以及Windows上的winpwd 。 那么你应该能够运行测试和嘲笑它,只要你喜欢。
import os if os.name == 'nt': class Pwd(): def getpwnam(self,user): pass pwd = Pwd() else: import pwd
可以做类似的工作吗? 您的项目中不需要额外的.py文件。
我已经用它来fchown自己几次了
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。