[PYTHON] Führen Sie selektiv Tests durch

Was du machen willst

Wenn Sie beispielsweise nur eine Teilmenge der Tests ausführen möchten, möchten Sie die zeitaufwändigen Tests überspringen und nur ausführen, wenn Sie dies angeben. Eine Möglichkeit besteht darin, jede Datei so zu teilen, dass sie durch den Dateinamen und die Erkennungsoption des unittest-Moduls unterschieden werden kann.

% python -m unittest --help
      ...
  -p pattern       Pattern to match test files ('test*.py' default)

Kann mit erreicht werden, aber hier

Ein Beispiel für den Umgang mit solchen Fällen wird gezeigt.

Wie macht man

Verwenden Sie die SkipIf, skipUnless-Dekoratoren des unittest-Moduls. Zum Beispiel

util.py


import unittest

run_slowtest = False


def slowtest(target):
    return unittest.skipUnless(run_slowtest, "Slow Test")(target)

Definieren Sie eine Dekorationsfunktion wie diese und geben Sie sie der Klasse oder Methode:

test_sample.py


import unittest

from util import slowtest


@slowtest
class TestA(unittest.TestCase):
    def test_a(self):
        pass


class TestB(unittest.TestCase):
    @slowtest
    def test_b(self):
        pass

Bei normaler Ausführung wird der Zieltest übersprungen:

% python -m unittest discover .
ss
----------------------------------------------------------------------
Ran 2 tests in 0.000s

OK (skipped=2)

Wenn Sie alles tun möchten, gehen Sie wie folgt vor:

% cat runner_full.py
import unittest

import util

util.run_slowtest = True
unittest.TestProgram(argv=['', 'discover'])
% python runner_full.py
..
----------------------------------------------------------------------
Ran 2 tests in 0.000s

OK

Recommended Posts

Führen Sie selektiv Tests durch
Führen Sie beim Speichern von Dateien automatisch Tests aus
Führen Sie den Komponententest aus, sobald Sie die Datei speichern