Не мисля, че всъщност можете да спрете изпълнението на тест с куката startTest
. nose2
документа предлага използването на matchPath
или getTestCaseNames
, за да направите това. Ето работещ пример с използване на matchPath
:
from nose2.events import Plugin
class SkipAllTests(Plugin):
configSection = "skipper"
commandLineSwitch = (None, 'skipper', "Skip all tests")
def matchPath(self, event):
event.handled = True
return False
Документите matchPath
всъщност изрично обясняват как може да се използва за спиране на изпълнението на тестове:
Приставките могат да използват тази кука, за да предотвратят зареждането на модулите на Python от тестовия зареждащ модул или да ги принудят да бъдат заредени от тестовия зареждащ механизъм. Задайте event.handled на True и върнете False, за да накарате зареждащото устройство да пропусне модула.
Използването на този метод ще предотврати зареждането на тестовия случай. Ако искате тестът действително да се показва в списъка като пропуснат, вместо изобщо да не се показва в списъка с тестове, можете да направите малко хакерство с StartTestEvent
:
def dummy(*args, **kwargs):
pass
class SkipAllTests(Plugin):
configSection = "skipper"
commandLineSwitch = (None, 'skipper', "Skip all tests")
def startTest(self, event):
event.test._testFunc = dummy
event.result.addSkip(event.test, 'skip it')
event.handled = True
Тук заместваме действителната функция, която тестът ще изпълни с фиктивна функция, която не прави нищо. По този начин, когато тестът се изпълни, той няма операции и след това съобщава, че е бил пропуснат.
person
dano
schedule
11.07.2014