我刚接触单元测试,试图找到一种方法来测试我的对象中 with
关键字是否正常工作。
在这种情况下,我的对象有一个 __enter__
方法,它创建了一个临时目录,还有一个 __exit__
方法,应该销毁它。 (它还有一个do_stuff
方法,仅用于测试向临时目录写入内容。)
我不太确定如何测试这个。我已经检查过 unittest
模块,甚至以前编写过基础方法的一些测试,但我不确定在这种情况下最好的方法是什么...或者它是否有意义。无论如何,以下是我的对象代码:
import shutil
import tempfile
import os
import glob
class MyObj(object):
def __enter__(self):
self.tmpdir = tempfile.mkdtemp(dir='.')
return self
def __exit__(self, exc_type, exc_value, traceback):
shutil.rmtree(self.tmpdir)
def do_stuff(self):
new = os.path.join(self.tmpdir, 'new_file.txt')
with open(new, 'w') as nf:
nf.write('testing')
print(glob.glob(self.tmpdir + '/*'))
myobj = MyObj()
with myobj as x:
x.do_stuff()
unittest
模块的努力吗?对于你展示的行为编写测试应该很简单,但你需要将测试代码放在测试用例中,而不是实际类的方法中。另一方面,如果你只是想问如何创建一个临时目录作为上下文管理器,只需使用现有的tempfile.TempDirectory
类即可。 - Blckknght