多线程中的Python单元测试

Wol*_*tan 1 python multithreading unit-testing

我想对主要进行文件输入和输出的几个类的功能进行单元测试.此外,我想在多个核心(--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")
Run Code Online (Sandbox Code Playgroud)

缺点非常明显:

  1. 每个测试必须接收唯一的目录名称
  2. 每个测试都有这个源代码的开销,这看起来真的不太令人满意

我可以使用什么方法来将我的测试彼此分开但是2.以更优雅的方式进行测试?

任何帮助,建议等都表示赞赏!

切里奥沃尔坦

Tho*_*chl 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()
Run Code Online (Sandbox Code Playgroud)

此外,您可以添加多处理以创建4个线程.

编辑:删除了os.mkdir,因为mkdtemp创建了一个临时目录,所以它是假的.塞巴斯蒂安.

  • `tempfile.mkdtemp()`创建一个目录,所以你不应该在它的结果上调用`os.mkdir()`. (2认同)