1. 内蔵デコレータ
1.1 .背景とシーンを使用する
1.1.1. 自動テストのプロセスでは、一部のテストケースは実行する必要がない場合がありますが、ユースケースは削除できないためスキップする必要があります。ユースケースが実行されない場合は、unittest が提供するデコレータ関数が必要です。 . ;
1.1.2. アプリケーションシナリオ:
1. 無条件スキップ。
2. 条件が満たされる場合はスキップします。
3. 条件が満たされない場合はスキップします。
1.2. アプリケーションシナリオ 1: 無条件スキップ
1.2.1. デコレータ: @unittest.skip('skip info')、無条件にスキップ
1.2.2. コード:
# 内置装饰器 @unittest.skip('skip info')
import unittest
"""
@unittest.skip('skip info'),无条件跳过
"""
class MyTest(unittest.TestCase):
@classmethod
def setUpClass(cls):
print("setUpClass")
@classmethod
def tearDownClass(cls):
print("tearDownClass")
def setUp(self):
print("初始化")
def tearDown(self):
print("数据清理")
@unittest.skip('skip info')
def test_1(self):
print("用例:1")
def test_2(self):
print("用例:2")
def test_3(self):
print("用例:3")
def test_4(self):
print("用例:4")
if __name__ == '__main__':
unittest.main()
1.2.3. 実行結果 (test_1 が実行、スキップ):
1.3. 適用シナリオ 2: 条件が満たされた場合にスキップ
1.3.1、デコレータ @unittest.skip (条件, 'info')を除く、条件が満たされる
1.3.2、コード
# 内置装饰器 @unittest.skip('skip info')
import unittest
"""
@unittest.skipIf(条件, 'info'),满足条件跳过
"""
class MyTest(unittest.TestCase):
a = 4
@classmethod
def setUpClass(cls):
print("setUpClass")
@classmethod
def tearDownClass(cls):
print("tearDownClass")
def setUp(self):
print("初始化")
def tearDown(self):
print("数据清理")
@unittest.skipIf(a>3, 'info')
def test_1(self):
print("用例:1")
def test_2(self):
print("用例:2")
def test_3(self):
print("用例:3")
def test_4(self):
print("用例:4")
if __name__ == '__main__':
unittest.main()
1.3.3. 実行結果
1.4.適用シナリオ3:条件が満たされない場合はスキップ
1.4.1、デコレータ @unittest.skip until (condition, 'info')、条件が満たされない
1.4.2、コード
# 内置装饰器 @unittest.skip('skip info')
import unittest
"""
@unittest.skipUnless(条件, 'info'),不满足条件跳过
"""
class MyTest(unittest.TestCase):
a = 4
@classmethod
def setUpClass(cls):
print("setUpClass")
@classmethod
def tearDownClass(cls):
print("tearDownClass")
def setUp(self):
print("初始化")
def tearDown(self):
print("数据清理")
@unittest.skipUnless(a>5, 'info')
def test_1(self):
print("用例:1")
def test_2(self):
print("用例:2")
def test_3(self):
print("用例:3")
def test_4(self):
print("用例:4")
if __name__ == '__main__':
unittest.main()
1.4.3. 実行結果
2.コマンドライン実行テスト
2.1. テストディレクトリ全体のテストファイルを実行する
2.1.1. ターミナルを開きます。
2.1.2. cd コマンドは、.py が保存されているテスト ファイル ディレクトリに切り替えます。
2.1.3. コマンドラインを実行します: python3 -m Unittest -v *.py
2.1.4. 実行結果:(すべてのユースケースの実行結果が出力されます)
2.2.ディレクトリに指定されたテストファイルを実行する
2.2.1.ターミナルを開きます。
2.2.2. cd コマンドは、.py が保存されているテスト ファイル ディレクトリに移動します。
2.2.3.コマンドラインを実行します: python3 -m Unittest -v 実行するファイル名:
例:python3 -m unittest -v file_1.py
2.2.4.実行結果:
3.指定されたファイル内の指定されたテスト セットまたは特定のテスト ケースを実行します。
3.3.1. ターミナルを開きます。
3.3.2. cd コマンドは、.py が保存されているテスト ファイル ディレクトリに切り替えます。
3.3.3. コマンドラインを実行します: python3 -m Unittest -v filename.classname.methodname
クラスの下のすべてのユースケースを実行します: python3 -m Unittest -v filename.classname
例: ファイル file_1.py 内のクラス Test_1 内のテスト ケース test_2 を実行します。
python3 -m ユニットテスト -v file_1.Test_1.test_2
3.3.4. 実行結果: