Как некоторые комментарии эхом, структурирование ваших тестов таким образом, вероятно, является дефектом дизайна в самих тестах, и вы должны рассмотреть возможность их реструктуризации. Однако, если вы хотите сделать это и полагаться на то, что используемый вами тестовый бегун выполняет их в алфавитном порядке (по-видимому), я предлагаю следующее.
Похоже на то, что говорил @Matthias, но я бы сделал одну вещь по-разному в тех случаях, когда вы можете решить наследовать от класса на более поздний срок.
from unittest import TestCase, main as unittest_main
class TestSimpleFoo(TestCase):
foo = 'bar'
def setUp(self):
pass
def test_a(self):
self.assertEqual(self.__class__.foo, 'bar')
self.__class__.foo = 'can'
def test_f(self):
self.assertEqual(self.__class__.foo, 'can')
if __name__ == '__main__':
unittest_main()
Разница между этим ответом и @ ответ Матиаса ты принял это явное объявление класса по сравнению с поиском указанной ссылки класса.
TestSimpleFoo vs self.__class__
Я предпочитаю dynamicness так что я могу наследовать тесты позже и запустить как тестовые классы спина к спине и не имеют какой-либо крест над между ними. Поскольку, если вы захотите наследовать от этого класса, явное назначение ссылки на класс приведет к тому, что оба тестовых класса будут выполняться против этой ссылки, а не их собственные соответствующие классы.
Единичные испытания должны быть независимыми. [В любом случае 'self.foo' ссылается на переменную * экземпляра *, тогда как' foo = 'bar'' (где она находится) присваивает переменную * class *.] – user2864740
Я тестирую OAuth2; 'login' устанавливает' access_token', который требуется для следующих нескольких тестов. –
Не можете ли вы создать * другой * тестовый класс с соответствующим 'setUp', чтобы высмеять соответствующий access_token? (Заставьте setUp вызывать OAuth по мере необходимости, больше тестирования интеграции на данный момент .. но считайте, что setUp * не может быть ошибочным *, или другой TestCase провалился.) – user2864740