Skip to main content
 首页 » 编程设计

多线程中的Python单元测试

2025年05月04日28langtianya

我想对几个主要执行文件输入和输出的类的功能进行单元测试。此外,我想在多个内核上执行此操作 (--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. 每个测试都有这种源代码开销,看起来一点都不愉快

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

感谢任何帮助、建议等!

切里奥沃尔坦

请您参考如下方法:

我建议使用 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 创建了一个临时目录,所以它是伪造的。谢谢塞巴斯蒂安。