1

我有一个不同音频格式的列表,应该将某个文件转换为这些格式。我编写的转换函数现在应该转换文件并返回成功信息、新创建文件的路径或一些失败信息。

self.AUDIO_FORMATS = ({'format':'wav', 'samplerate':44100, 'bitdepth':16 },
                      {'format':'aac', 'samplerate':44100, 'bitdepth':16 },
                      {'format':'ogg', 'samplerate':44100, 'bitdepth':16 },
                      {'format':'mp3', 'samplerate':44100, 'bitdepth':16 } )

由于其中一个转换失败的一个可能原因是缺少库,或者此类库或我的实现中的某些错误或失败,我想测试每个转换以最终获得通过和失败测试的列表,失败的那些告诉我究竟是哪个转换确实导致了麻烦。这是我尝试过的(有点简化):

def test_convert_to_formats(self):

    for options in self.AUDIO_FORMATS:
        created_file_path, errors = convert_audiofile(self.audiofile,options)
        self.assertFalse( errors )
        self.assertTrue( os.path.isfile(created_file_path),

当然,这是在第一次转换失败后立即中止测试。我可以为每个转换编写一个测试函数。这将导致必须为每个添加的格式编写一个新测试,现在我只需向我的 AUDIO_FORMATS 元组添加一个新字典。

4

2 回答 2

6

代替断言,将错误存储在数组中。在迭代结束时,断言 errors 数组为空,并可能将数组的内容作为断言失败的原因转储。

于 2012-04-23T09:24:14.053 回答
0

为什么不使用 尝试...除了...

  errors = []

  for option in optionlist:
    try:
      assert_and_raise1(option)
      assert_and_raise2(...)
    except Exception, e:
      errors.append("[%s] fail: %s"%(option, e))

   for e in errors:
     print e
于 2012-04-23T12:01:02.337 回答