Python多线程单元测试
我想对几个主要进行文件输入和输出的类进行单元测试。此外,我还想在多个核心上进行测试(--jobs=4)。
问题是,这些类创建的文件经常有相同的名字,导致在多个线程中混淆。我现在的做法是,每个单元测试都在一个单独的目录中运行,像这样:
def test(self):
if os.path.exists("UniqueDir"):
os.system("rm -rf UniqueDir")
os.mkdir("UniqueDir")
os.chdir("UniqueDir")
#Do the actual testing
os.chdir("..")
os.rmdir("UniqueDir")
这样做的缺点很明显:
- 每个测试必须有一个独特的目录名称
- 每个测试都有这个额外的源代码,这看起来真的不太好
我可以用什么方法来1. 将我的测试分开,但2. 以更优雅的方式做到这一点呢?
任何帮助、建议等都非常感谢!
祝好,Woltan
1 个回答
7
我建议使用unittest模块来构建类,像这样:
import unittest
from tempfile import mkdtemp
class Test(unittest.TestCase):
def setUp(self):
self.tempdir = mkdtemp()
os.chdir(self.tempdir)
def tearDown(self):
os.rmdir(self.tempdir)
def testName(self):
#Do the actual testing
pass
if __name__ == "__main__":
unittest.main()
另外,你可以加入多线程功能,创建4个线程。
编辑:去掉了os.mkdir,因为mkdtemp会创建一个临时目录,所以之前的做法是不对的。谢谢Sebastian。