Das Angeben von Namen in der Befehlszeile, wie in den anderen Antworten angegeben, funktioniert und ist nützlich. Wenn ich gerade Tests schreibe, stelle ich jedoch häufig fest, dass ich nur den Test ausführen möchte, an dem ich arbeite, und die Namen, die ich in die Befehlszeile schreiben müsste, werden ziemlich lang und umständlich zu schreiben . In diesem Fall bevorzuge ich die Verwendung eines benutzerdefinierten Dekorateurs und einer Flagge.
Ich definiere wipd("work in progress decorator") folgendermaßen:
from nose.plugins.attrib import attr
def wipd(f):
return attr('wip')(f)
Dies definiert einen Dekorateur, @wipdder das wipAttribut für Objekte festlegt , die er dekoriert. Zum Beispiel:
import unittest
class Test(unittest.TestCase):
@wipd
def test_something(self):
pass
Dann -a wipkann in der Befehlszeile verwendet werden , um die Ausführung des Tests auf das mit markiert zu verengen @wipd.
Hinweis zu Namen ...
Ich verwende den Namen @wipdfür den Dekorateur, anstatt @wipdiese Art von Problem zu vermeiden:
import unittest
class Test(unittest.TestCase):
from mymodule import wip
@wip
def test_something(self):
pass
def test_something_else(self):
pass
Dadurch importwird der wipDekorateur zu einem Mitglied der Klasse , und alle Tests in der Klasse werden ausgewählt. Das attribPlugin überprüft die übergeordnete Klasse einer Testmethode, um festzustellen, ob das ausgewählte Attribut auch dort vorhanden ist und die Attribute, die von erstellt und getestet werden attrib, nicht in einem getrennten Bereich vorhanden sind. Wenn Sie also mit testen -a foound Ihre Klasse enthält foo = "platypus", werden alle Tests in der Klasse vom Plugin ausgewählt.