7

unittestPython形式を使用して一連の Python テストを作成しました。

今、私はそれらを実行することができます

python -m unittest discover -s TestDirectory -p '*.py' -v

私はそれらをすべて見つけて実行します。

Windows でテストを実行するか、Linux でテストを実行するかに微妙な違いがあります。実際、Windows ではテストはアルファベット順に実行されますが、Linux では、常に同じであっても、明らかに人間固有の検出可能な順序でテストが実行されるわけではありません。

問題は、テストの実行順序をソートするために、テスト ファイルの最初の 2 文字に依存していたことです。特定の順序で実行する必要があるわけではありませんが、出力にバージョン データを表示してテスト実行ログの最初に表示する、ある種の情報テストを行う必要があります。

Linuxでテストをアルファベット順に実行するためにできることはありますか?

4

1 に答える 1

0

私はこれを試したことはありませんが、TestSuite クラスをオーバーライドしてソート機能を追加することができると思います。その後、unittest run 関数を呼び出す前に sort 関数を呼び出すことができます。したがって、「AllTests.py」スクリプトでは、次のようなものを追加できます。

class SortableSuite(unittest.TestSuite):
    def sort(self):
        self._tests.sort(cmp=lambda x,y: x._testMethodName < y._testMethodName)
    def run(self,testResult):
        #or if you don't want to run a sort() function, you can override the run
        #function to automatically sort.
        self._tests.sort(cmp=lambda x,y: x._testMethodName < y._testMethodName)
        return unittest.TestSuite.run(self,testResult)

loader = unittest.TestLoader()
loader.suiteClass = SortableSuite
suite = loader.loadTestFromTestCases(collectedTests)
suite.sort()
suite.run(defaultTestResult())
于 2013-04-15T15:53:18.893 に答える