Mat*_*ris 3 python synchronization unit-testing pyinotify
我正在使用pyinotify将文件从源目录镜像到目标目录.当我手动执行时,我的代码似乎正常工作,但我无法获得准确的单元测试结果.我认为问题归结为:
有没有人成功进行pyinotify单元测试?
在单元测试时,通常应该考虑线程和文件系统之类的事情.您是否有理由使用实际文件系统,用户输入等进行单元测试?
Python使得修补程序非常容易; 例如,你可以用模拟对象(比如Python Mock)替换整个os/sys模块,这样你就不需要处理文件系统了.这也将使您的测试运行得更快.
如果您想使用文件系统进行功能测试,我建议您设置一个具有已知状态的虚拟机,并在每次运行测试时恢复到该状态.您还可以根据需要模拟用户输入,文件操作等.
编辑
这是一个如何伪造或模拟"开放"功能的简单示例.
假设你有一个模块my_module,带有一个get_text_upper功能:
def get_text_upper(filename):
return open(filename).read().upper()
Run Code Online (Sandbox Code Playgroud)
你想在不实际接触文件系统的情况下测试它(最终你将开始只传递文件对象而不是文件名以避免这种情况,但现在......).您可以模拟该open函数,以便它返回一个StringIO对象:
from cStringIO import StringIO
def fake_open(text):
fp = StringIO()
fp.write(text)
fp.seek(0)
return fp
def test_get_text():
my_module.open = lambda *args, **kwargs : fake_open("foo")
text = my_module.get_text_upper("foo.txt")
assert text == "FOO", text
Run Code Online (Sandbox Code Playgroud)
使用模拟库只会使这个过程更容易,更灵活.
这是关于python的模拟库的stackoverflow帖子.
| 归档时间: |
|
| 查看次数: |
451 次 |
| 最近记录: |