Python,按特定顺序运行命令

时间:2012-03-22 17:59:43

标签: python unit-testing file-io

我正在编写一个脚本,从unix目录中获取最近修改过的文件。 我确信它有效,但我必须创建一个单元测试来证明它。

问题是setUp函数。我希望能够预测文件的创建顺序。

self.filenames = ["test1.txt", "test2.txt", "test3.txt", "filename.txt", "test4"]
newest = ''
for fn in self.filenames:
    if pattern.match(fn): newest = fn
    with open(fn, "w") as f: f.write("some text")

模式是“test。*。txt”,因此它只匹配列表中的前三个。在多个测试中,最新的有时返回'test3.txt',有时返回'test1.txt'。

3 个答案:

答案 0 :(得分:5)

使用os.utime在您创建的文件上显式设置修改时间。这样你的测试就会跑得更快。

答案 1 :(得分:4)

我怀疑您使用的文件系统是否支持文件创建时间的小数秒。

我建议您在循环中插入对time.sleep(1)的调用,以便文件系统在每个创建的文件上实际具有不同的时间戳。

答案 2 :(得分:0)

这可能是由于同步。仅仅因为您按特定顺序对文件调用write(),并不意味着操作系统将按该顺序更新数据。

在转到下一个文件之前,尝试在文件对象上调用f.flush()后跟os.fsync()。在通话之间给予一些时间(使用sleep())也可能有帮助