Если вы используете 'nose' и пишете свои тестовые случаи как функции (а не как методы какого-либо производного класса TestCase), 'nose' не влияет на порядок, а использует порядок функций, определенный вфайл.Для того, чтобы методы assert_ * были удобны без необходимости создавать подклассы TestCase, я обычно использую модуль тестирования из numpy.Пример:
from numpy.testing import *
def test_aaa():
assert_equal(1, 1)
def test_zzz():
assert_equal(1, 1)
def test_bbb():
assert_equal(1, 1)
Выполнение этого с '' nosetest -vv '' дает:
test_it.test_aaa ... ok
test_it.test_zzz ... ok
test_it.test_bbb ... ok
----------------------------------------------------------------------
Ran 3 tests in 0.050s
OK
Примечание для всех тех, кто утверждает, что модульные тесты не должны заказываться: пока этоПравда, модульные тесты должны быть изолированными и могут выполняться независимо, ваши функции и классы обычно не являются независимыми.Они скорее строятся на другом - от более простых / низкоуровневых функций до более сложных / высокоуровневых функций.Когда вы начинаете оптимизировать свои низкоуровневые функции и путаетесь (со своей стороны, я делаю это часто; если вы этого не делаете, вам, вероятно, все равно не нужен модульный тест ;-), тогда это намного лучше для диагностики причины,когда сначала идут тесты для простых функций, а позже - для функций, которые зависят от этих функций.Если тесты отсортированы в алфавитном порядке, истинная причина обычно тонет среди ста неудачных утверждений, которых нет, потому что у тестируемой функции есть ошибка, а потому, что у функции низкого уровня, на которую она опирается, есть.
почему я хочу, чтобы мои модульные тесты сортировались так, как я их указал: не использовать состояние, созданное в ранних тестах в последующих тестах, а как очень полезный инструмент для диагностики проблем.