0

鼻で使用するためのpythonクラスTest_getFileSizeを作成しました

関連セクション:

def __init__(self,mytestfile="./filetest",testsize=102400):
    ''' Constructor'''
    print " Running __init__", testsize,mytestfile
    self.testsize=testsize
    self.mytestfile = mytestfile

そして主力の方法:

@with_setup(setUp, tearDown)
def test_getFileSize(self):
     from nose.tools import ok_, eq_,with_setup
     import mp4
     with open(self.mytestfile,"rb") as out:
          filesize=mp4.getFileSize(out)
          eq_(self.testsize,filesize,msg='Passed Test  size')
          print "Results ", filesize,self.testsize

このクラスを含むファイルに対して NOSETEST を実行すると、デフォルト値と正しい setUp メソッドと TeaDown メソッドを使用してクラスが正しくテストされます。問題は、それを行うクラスを作成すると、setUp メソッドが実行されないことです。

私ができるようにしたいのは、さまざまなファイルサイズをテストすることです(つまり、ファイルサイズの値を渡します)。

それを行うためのより良い方法があれば、私はすべての耳です. 可能であれば、コマンドライン経由で実行しないことをお勧めします。

ありがとうジム

4

1 に答える 1

0

テスト関数自体がジェネレーターであるテスト関数 (クラスの一部ではない) を記述できます。各 yield は、別のテストを生成するための引数を使用して実行する新しい関数を返します。テストしたいリストとして500の異なるファイル名/ファイルサイズがある場合、これはうまく機能します。

簡単な例/ドキュメントについては、こちらを参照してください: http://nose.readthedocs.org/en/latest/writing_tests.html#test-generators

テスト クラスでは、このジェネレーター メソッドをクラス メソッドに使用できないため、少し複雑になります。メタクラスを使用して、テストを実行するのに適切な数の関数 (たとえば、ケースごとに 1 つ) を持つクラスを返すことができますが、それはやりたいことを超えている可能性があります。

そうは言っても、ファイル名/サイズのリストを反復処理し、それぞれに対してテストを実行する単一のテスト メソッドがあれば十分であることがわかるかもしれません。そこでの作業は大幅に少なくなりますが、テストの集合セットに対して 1 つの「テスト」出力行が生成されます。

ある人がこれをどのように行ったかについては、この質問を参照してください。

鼻、unittest.TestCase およびメタクラス: 自動生成された test_* メソッドが検出されない

于 2013-08-07T18:19:18.033 に答える