En Python 2.5 (Jython réellement), pour la classe UnitTest TestCase - il n'y a pas de méthode SetUpClass, et __init__
n'est pas vraiment acceptable (pas de refférence à soi-même). Lorsque je tente de changer docstring à l'intérieur du TestCase:Comment changer la docstring de la classe TestCase en Python?
import os
fileName = os.path.split(__file__)[1]
testCaseName = os.path.splitext(fileName)[0]
setattr(__name__, '__doc__', testCaseName)
Je reçois:
setattr(__name__, '__doc__', testCaseName)
TypeError: readonly attribute
J'ai essayé de changer le docstring par instancier dans un objet (où self.__doc__
est éditable).
UPDATED: but I want to avoid additional coding in the sub-class (i.e. inheriting super-class function to set docstring of sub-class), for example:
DynamicTestCase.py Fichier comprend:
class DynamicTestCase(unittest.TestCase):
def setDocstring(self, testCaseDocstring=None):
if not testCaseDocstring:
fileName = os.path.split(__file__)[1]
testCaseDocstring = os.path.splitext(fileName)[0]
setattr(self, '__doc__', testCaseDocstring)
MyTestCase.py Fichier comprend:
class MyTestCase(DynamicTestCase):
def test_print_docstring(self):
self.setDocstring()
print 'MyTestCase Docstring = ', self.__doc__
Mais encore, le résultat de l'exécution unittest est:
MyTestCase Docstring = DynamicTestCase
Lorsque je me attendais MyTestCase docstring = MyTestCase
samplebias Merci, j'ai essayé en premier lieu de changer le docstring TestCase, avant d'ajouter son module au testLoader: 'recueil HSC (unittest.defaultTestLoader .loadTestsFromName (testCase)) –
Mais comme TestCase __doc__ n'est pas accessible en écriture, j'essaie maintenant de le faire comme vous l'avez suggéré - sous la sous-classe: 'def setDocstring (self): fileName = os.path.split (__file __) [1] testCaseDocstring = os.path.splitext (nomfichier) [0] setattr (self, '__doc__', testCaseDocstring) 'Cependant, cette fonction ne fonctionne pas non plus, car lors de son utilisation, la sous-classe docstring toujours obtient le nom de fichier de super-classe, au lieu du nom de fichier de sous-classe actuel. –
Je vais mettre à jour la réponse avec ce que je voulais dire par "changez-le dans la sous-classe de TestCase". Pouvez-vous donner un exemple du problème que vous essayez de résoudre en changeant la docstring de la classe? – samplebias