У меня есть желание использовать Nose для набора тестов для беспроводной интеграции. Однако важен порядок выполнения некоторых из этих тестов.
Тем не менее, я решил собрать быстрый плагин, чтобы украсить тест в том порядке, в котором я хочу, чтобы он выполнялся: https://gist.github.com/Redsz/5736166
def Foo(unittest.TestCase):
@step(number=1)
def test_foo(self):
pass
@step(number=2)
def test_boo(self):
pass
Изучив встроенные плагины, я подумал, что могу просто переопределить loadTestsFromTestCase
и упорядочить тесты по оформленному «номеру шага».:
def loadTestsFromTestCase(self, cls):
"""
Return tests in this test case class. Ordered by the step definitions.
"""
l = loader.TestLoader()
tmp = l.loadTestsFromTestCase(cls)
test_order = []
for test in tmp._tests:
order = test.test._testMethodName
func = getattr(cls, test.test._testMethodName)
if hasattr(func, 'number'):
order = getattr(func, 'number')
test_order.append((test, order))
test_order.sort(key=lambda tup: tup[1])
tmp._tests = (t[0] for t in test_order)
return tmp
Этот метод возвращает тесты в том порядке, в котором я хочу, однако, когда тесты выполняются носом, они не выполняются в этом порядке?
Возможно, мне нужно перенести эту концепцию заказа в другое место?
ОБНОВЛЕНИЕ: судя по моему комментарию, плагин действительно работает так, как ожидалось. Я ошибся, поверив репортеру теста pycharm. Тесты идут, как и ожидалось. Вместо того, чтобы удалить вопрос, я решил, что оставлю его.