3

私がやりたいのは、ユーザーがテスト用のファイルを入れることができるフォルダーを作成し、テストを別のテストとして実行するためにpyunitを自動的に展開することです。現在、私がしていることは次のとおりです。

class TestName(unittest.testcase):
    def setUp(self):
        for file in os.listdir(DIRECTORY):
            # Setup Tests

    def test_comparison(self):
        for file in os.listdir(DIRECTORY):
            # Run the tests

def suite():
    return unittest.TestSuite([
unittest.TestLoader().loadTestsFromTestCase(TestName),
])

if __name__ == "__main__":
    unittest.TextTestRunner(verbosity=2).run(suite())

もちろん、テストが失敗したり、全体が失敗したりするなど、多くの問題があります。私がやりたいのは、テスト(またはテストケース)を実行するようにpyunitを設定することです。ディレクトリに配置される各ファイル。さて、私ができると思っているのは、2つのメソッドだけを使用して上記のクラスを作成することですが、それを正常に行うには、コンテキストパラメーターを追加する必要があります。

def setUp(self, filepath):
    # Do stuff

次に、ループをコードのメインチャンクに配置し、次のようなテストを実行できます。

def suite():
    return unittest.TestSuite([
unittest.TestLoader().loadTestsFromTestCase(TestName, file),
])

if __name__ == "__main__":
    for file in DIRECTORY:
        unittest.TextTestRunner(verbosity=2).run(suite(file))

しかし、hole unittest.TestCase()クラスをほとんど書き直さずにそれを行う方法がわかりません。それを行う方法はありますか、またはフォルダー内のファイルの数に応じてテスト/テストケースのセットを動的に拡張する方法はありますか?ありがとう。

4

3 に答える 3

2

さて、私は私の質問に対する答えを見つけたと思います。私はグローバル名前空間を使用していたと言えますが、何らかの理由で、名前空間に関する私の通常の知識は、その顔に横ばいになりました。

class TestImage(unittest.TestCase)
    pass #Do stuff, as well as using the filename variable

def suite():
    return unittest.TestSuite([
unittest.TestLoader().loadTestsFromTestCase(TestImage),
])

if __name__ == "__main__":
    for filename in os.listdir(sys.path[0]):
        unittest.TextTestRunner(verbosity=2).run(suite())

これにより、ディレクトリ内のすべてのファイル名に対してテストケースが実行されます。(およびフォルダ名)。unittestクラスでfilenameを使用できる理由はわかりませんが。これらのマクロがクラスをロードして実行する方法と関係があるはずです。

于 2010-06-30T16:54:53.460 に答える
2

テストジェネレーターにノーズサポートを使用できます。これは次のようになります。

def test_comparison():
    for file in os.listdir(DIRECTORY):
        yield run_cmp_test, file

def run_cmp_test(file):
    # Run the tests

または、 py.testでfuncargsを実行することもできます。

于 2010-06-29T02:36:31.950 に答える
0

これは、 testscenarios、モジュール、次のようなもので行うことができます。

class MyTest(unittest.TestCase):

    scenarios = [os.listdir(sys.path[0])]

    ...
于 2014-01-06T21:44:37.420 に答える