Lesen Sie Nase Tests Argumente in einer Datei vor allem @attr

Wenn ich ein Test-Skript anrufe

nosetests -a tag1='one' 

tag1 es eine Möglichkeit, die Benutzereingabe von tag1 in meinem Skript zu drucken?

 @attr(tag1=['one', 'two', 'three', 'four']) def test_real_logic(self): #how to print the user input here 

One Solution collect form web for “Lesen Sie Nase Tests Argumente in einer Datei vor allem @attr”

Nicht ohne Schmerzen self.test_real_logic.tag1 sollte Ihnen alle Attribute geben, die der Funktion beigefügt sind. Sie werden als Wörterbuch im __dict__ Attribut der Testfunktion gespeichert. Für test_real_logic.tag1 wäre es ['one', 'two', 'three', 'four'].

Wenn Sie nicht wollen, harte Code-Funktion Namen, Sie cad versuchen, extrahieren das Wörterbuch, indem Sie so etwas wie:

 import sys def get_attr_dict(cls): # cls here is either unittest.TestCase or whatever stores your test return getattr(cls, sys._getframe().f_back.f_code.co_name).__dict__ 

Jetzt musst du über lokale Attribute iterieren und sie mit den Systemargumenten für eine Übereinstimmung vergleichen und die Attribute ausdrucken, die üblich sind, ähnlich wie bei welchem ​​Attribut Plugin bereits funktioniert. Oder Sie können die vorhandene attrib validateAttrib leicht ändern, so dass sie ein passendes Attribut zur Liste der Attribute hinzufügt, so etwas wie dieses (in Lib/site-packages/nose/plugins/attrib.py ):

 def validateAttrib(self, method, cls = None): """Verify whether a method has the required attributes The method is considered a match if it matches all attributes for any attribute group. .""" # TODO: is there a need for case-sensitive value comparison? any = False for group in self.attribs: match = True for key, value in group: attr = get_method_attr(method, cls, key) if callable(value): if not value(key, method, cls): match = False break elif value is True: # value must exist and be True if not bool(attr): match = False break elif value is False: # value must not exist or be False if bool(attr): match = False break elif type(attr) in (list, tuple): # value must be found in the list attribute if not str(value).lower() in [str(x).lower() for x in attr]: match = False break else: # value must match, convert to string and compare if (value != attr and str(value).lower() != str(attr).lower()): match = False break any = any or match #remember match if match: matched_key = key matched_value = value if any: method.__dict__['matched_key'] = matched_key method.__dict__['matched_value'] = matched_value # not True because we don't want to FORCE the selection of the # item, only say that it is acceptable return None return False 

Auf diese Weise hat dein self.test_real_logic zwei zusätzliche Attribute matched_key=tag1 und matched_value=one , die man ähnlich als tag1 Attribut tag1 kann.

  • Ausschluss von abstrakten Eigenschaften aus Berichterstattung
  • Wer weiß, wie nosetest's -m, -i und -e arbeiten?
  • Liste aller Tests, die von Nosetest gefunden wurden
  • Wie messe ich die Ausführungszeit von python-Unit-Tests mit Nasen?
  • Wie gibt man Coverage XML mit Nosetests aus?
  • Python-nosetests deaktivieren
  • Wie kann man die Auslieferung mit nosetest / unittest in python behaupten?
  • Nosetests Import Error
  • Wie kann man die Sitzungsdaten im automatisierten Test initialisieren? (Python 2.7, webpy, nosetests)
  • Python ist die beste Programmiersprache der Welt.