回答:
クラスに複数のテストメソッドがあると、違いが現れます。setUpClassそしてtearDownClassクラス全体に対して一度実行されます。setUpそしてtearDown、各テストメソッドの前と後に実行されています。
例えば:
class Example(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        print("setUpClass")
    def setUp(self):
        print("setUp")
    def test1(self):
        print("test1")
    def test2(self):
        print("test2")
    def tearDown(self):
        print("tearDown")
    @classmethod
    def tearDownClass(cls):
        print("tearDownClass")
このテストを実行すると、次のように出力されます。
setUpClass
setUp
test1
tearDown
.setUp
test2
tearDown
.tearDownClass
(ドット(.)されているunittestテストを通過したときのデフォルトの出力。)ことを確認setUpし、tearDown前と後に現れるtest1 と test2、一方setUpClassとtearDownClass全体のテストケースの開始時と終了時に、一度だけ表示されます。
unittestテストが問題tearDownなく完了するまで、テストに合格したとは見なしません。
                    setUpおよびtearDownは、すべてのtestメソッドに対して1 回(したがって、この例では合計2回)実行されますがsetUpClass、およびtearDownClassは、それぞれ1回だけ実行されます。
                    setUp()とsetUpClass()Pythonの中unittestのフレームワークは?主な違い(Benjamin Hodgsonの回答で述べられているように)は、setUpClass1回だけ呼び出され、すべてのテストのsetUp前に呼び出されますが、すべてのテストの直前に呼び出されます。(注:同じことが、Pythonだけでなく、他のxUnitテストフレームワークの同等のメソッドにも適用されunittestます。)
unittest ドキュメントから:
setUpClass()個々のクラスのテストが実行される前に呼び出されるクラスメソッド。setUpClassは、クラスを唯一の引数として呼び出され、classmethod()として装飾する必要があります。
@classmethod
def setUpClass(cls):
    ...
そして:
setUp()テストフィクスチャを準備するために呼び出されるメソッド。これは、テストメソッドを呼び出す直前に呼び出されます。AssertionErrorまたはSkipTest以外の場合、このメソッドによって発生した例外は、テストの失敗ではなくエラーと見なされます。デフォルトの実装では何も行われません。
質問のこの部分はまだ回答されていません。Gearonの回答に対する私のコメントのとおり、このsetUpメソッドは、すべてのテストに共通するフィクスチャの要素を対象としています(各テストでそのコードが重複しないようにするため)。重複を取り除くことで(通常は)読みやすさが向上し、メンテナンスの負担が軽減されるため、これはしばしば便利です。
このsetUpClass方法は、データベース接続を開く、ファイルシステムの一時ファイルを開く、テスト用の共有ライブラリをロードするなど、一度だけ実行する必要がある高価な要素用です。各テストの前にそのようなことを行うと、テストスイートが多すぎるため、すべてのテストの前に一度だけ実行します。これは、テストの独立性のわずかな低下ですが、一部の状況では必要な最適化です。おそらく、本当のことを使わずにデータベース/ファイルシステム/ライブラリ/何でもモックすることができるので、ユニットテストではそのようなことをすべきではありません。そのため、それsetUpClassが必要になることはほとんどありません。ただし、上記の例(または同様の例)のテストが必要になった場合に役立ちます。