Unittest tearDown()方法取决于完成的测试

时间:2015-05-29 10:13:22

标签: python unit-testing selenium

我写了Selenium测试,但有问题。在每次测试之前,我为每个测试上传不同的文件,测试完成后,即使测试失败,我也希望从应用程序中删除这些文件。有两种方法setUptearDown。它们在每次测试之前和之后调用,但是如何定义在tearDown方法中完成的测试?这对我来说很重要,因为在每次测试后我都想从应用程序中删除不同的文件,具体取决于完成的测试。

我想要类似的东西:

def tearDown(self):
    if test1_is_finished():
       remove_test1_files
    if test2_is_finished():
       remove_test2_files
    # and so on

我是Python和Selenium测试的新手,在测试完成后,即使失败,也许可以采用更好的方法来完成某项工作。

1 个答案:

答案 0 :(得分:2)

setUp方法中(在每次测试之前运行),创建一个列表to_be_removed

def setUp(self):
    self.to_be_removed = []

在每个单元测试中,将文件名附加到to_be_removed

def test1(self):
    ...
    self.to_be_removed.append(filename)

然后,在tearDown中,删除to_be_removed中列出的所有文件:

def tearDown(self):
    for filename in self.to_be_removed:
        os.unlink(filename)

这样,您可以用同样的方式处理所有tearDown