如何测试使用os导入并创建新文件夹等的python脚本



我不确定是否有一种很好的方法来测试这样的东西,但也许你知道一个:

我写了一个python脚本,它在一些给定的目录中查找更改(添加的文件(,如果它检测到添加的文件,它会在它们上运行一个子进程((,这需要1到2个小时。然后它移动文件,删除和重命名文件夹等

现在我厌倦了每次添加一些更改时手动测试它,但我也不知道如何使用自动测试来测试它。有人有主意吗?

谢谢!

第一步是对不同的函数进行单元测试,这可以通过内置的单元测试框架来完成。要想高效地进行单元测试,首先需要将不同的功能划分为不同的功能/单元(如果还没有这样做的话(。也就是说,您应该有一个检查更改的函数,而不是其他函数。还有一个函数可以重命名文件夹,而不重命名其他内容。例如

然后,当运行unittest时,您将测试独立的函数,例如检测更改的函数。这是在dummy/mock目录上完成的,这些目录最好在开始时由测试脚本创建,然后在完成后删除。由于您只测试检测更改的函数,因此它不依赖于缓慢的子流程,因此运行起来非常快。然后你有另一个单元测试,用于测试移动、删除、重命名e.t.c。当你有一套完整的单元测试时,你知道你可以按预期分离函数/单元。

然后,您应该定期运行单元测试,最好是每晚或每次更改时自动运行。这样做,你会很快发现错误,并使它们更容易修复。

示例:

import unittest
from my_module import hasDirectoryChanged
class CheckDirectoryChangesTestCase(unittest.TestCase):
def setUp(self):
createMockDirectory(dirName)
def test_detect_when_change(self):
addChangesToMockDirectory(dirName)
self.assertTrue(hasDirectoryChanged(dirName))
def test_no_detect_when_no_change(self):
self.assertFalse(hasDirectoryChanged(dirName))
def tearDown(self):
removeMockDirectory(dirName)

下一步是集成测试。这可以在python中以各种方式完成,但最重要的是自动化!

最新更新