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, @wipd
der das wip
Attribut für Objekte festlegt , die er dekoriert. Zum Beispiel:
import unittest
class Test(unittest.TestCase):
@wipd
def test_something(self):
pass
Dann -a wip
kann 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 @wipd
für den Dekorateur, anstatt @wip
diese 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 import
wird der wip
Dekorateur zu einem Mitglied der Klasse , und alle Tests in der Klasse werden ausgewählt. Das attrib
Plugin ü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 foo
und Ihre Klasse enthält foo = "platypus"
, werden alle Tests in der Klasse vom Plugin ausgewählt.