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 } )

変換の 1 つが失敗する 1 つの考えられる理由は、ライブラリの欠落、またはそのようなライブラリまたはその実装のバグまたは失敗であるため、各変換をテストして、最終的に成功したテストと失敗したテストのリストを取得したいと考えています。 、失敗したものは、どの変換が問題を引き起こしたかを正確に教えてくれます。これは私が試したものです(少し簡略化されています):

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

アサートする代わりに、エラーを配列に格納します。反復の最後に、エラー配列が空であることをアサートし、アサーション失敗の理由として配列の内容をダンプする可能性があります。

于 2012-04-23T09:24:14.053 に答える
0

なぜ try...except... を使わないのですか?

  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 に答える