今回は、Python Unittest を自動化する方法 単体テスト と、単体テストを自動化するための Python Unittest の 注意事項 について、実際の事例を紹介します。
この記事の例では、参考のために Python Unittest 自動単体テスト フレームワークの具体的なコードを共有します。具体的な内容は次のとおりです
1. Python テスト フレームワーク (この記事には PyUnit のみが含まれます)
参考アドレス
2. 環境の準備
まず Python がインストールされていることを確認してから、PyUnit をインストールします (PyUnit はグラフィカル テスト インターフェイス UnittestGUI.py を提供します)
参考: アドレスを表示
3.
使用したIDEはPyCharmです
1の簡単な例です
# Test002_Fail.py # -*- coding:utf-8 -*- import unittest class Test002_Fail(unittest.TestCase): #测试用例前执行 def setUp(self): print 'Case Before' pass #测试用例后执行 def tearDown(self): print 'Case After' pass #测试用例1 def test_Case1(self): a = 3 b = 2 self.assertEqual(a+b,4,'Result Fail') #测试用例2 def test_Case2(self): a = 2 b = 3 self.assertEqual(a*b,7,'Result Fail') if name == 'main': unittest.main()
2. 複数のケースを管理するにはSuiteを使用します。ケースコンテナは多くのケースを保持できます
# SuiteDemo.py # -*- coding:utf-8 -*- #一个类,添加测试集 import unittest class SuiteDemo(unittest.TestCase): #测试用例前执行 def setUp(self): print 'Case Before' pass #测试用例后执行 def tearDown(self): print 'Case After' pass def test_Case1(self): a = 3 b = 2 self.assertEqual(a+b,5,'Result Fail') print 'Case1' def test_Case2(self): a = 2 b = 3 self.assertEqual(a*b,6,'Result Fail') print 'Case2' #定义一个测试集合,方便添加Case def suite(): suiteTest = unittest.TestSuite() suiteTest.addTest(SuiteDemo("test_Case1")) suiteTest.addTest(SuiteDemo("test_Case2")) return suiteTest #默认运行时通过 Suite 运行 if name == 'main': unittest.main(defaultTest='suite')
3.スイートとケースは別々の Python ファイルで記述できるため、テスト時にケース モジュールとスイート管理モジュールを簡単に区別できます。 case モジュールに case を追加し、それを Suite モジュールに追加します
case モジュール
# TestCaseDemo # -*- coding:utf-8 -*- import unittest class TestCaseDemo(unittest.TestCase): def setUp(self): pass def tearDown(self): pass def test_Case1(self): print 'test_Case1' def test_Case2(self): print 'test_Case2' def test_Case3(self): print 'test_Case3' def test_Case4(self): print 'test_Case4'
次は 3 つの Suite モジュールで、最初に Case モジュールをインポートし、次に Suite を追加してから、Case をSuite を作成し、最後に実行時に TestRunner を使用します。この TestRunner は Suite のエグゼキューターに相当します
Simple TestSuite:
# TestCase_Demo1.py # -*- coding:utf-8 -*- #集合写入一个方法,main调用并启动 import unittest from TestCase_Demo import TestCaseDemo #添加一个测试集合,并添加Case def suite(): suiteTest = unittest.TestSuite() suiteTest.addTest(TestCaseDemo('test_Case1')) return suiteTest #指定并启动测试集合,运行集合方法 if name == 'main': runner = unittest.TextTestRunner() runner.run(suite())
Suite メソッドを定義せずに直接 main メソッドに Case を追加して実行することもできます
# TestCase_Demo2.py # -*- coding:utf-8 -*- #集合可以写在main import unittest from TestCase_Demo import TestCaseDemo #指定并启动测试集合 if name == 'main': #添加测试集合Case,并启动 suiteTest = unittest.TestSuite() suiteTest.addTest(TestCaseDemo('test_Case1')) suiteTest.addTest(TestCaseDemo('test_Case2')) #直接启动集合 runner = unittest.TextTestRunner() runner.run(suiteTest)
異なる Case を異なる Suite に追加します。同様に、Suite をグループ化して異なる Case を区別することもできます。また、Suite には
# TestCase_Demo3.py # -*- coding:utf-8 -*- #包含集合,多集合 import unittest from TestCase_Demo import TestCaseDemo #添加不同的合集 def Suite1(): suiteTest = unittest.TestSuite() suiteTest.addTest(TestCaseDemo("test_Case1")) suiteTest.addTest(TestCaseDemo("test_Case2")) print 'Suite1 运行' return suiteTest def Suite2(): suiteTest = unittest.TestSuite() suiteTest.addTest(TestCaseDemo("test_Case3")) suiteTest.addTest(TestCaseDemo("test_Case4")) print 'Suite2 运行' return suiteTest #包含所有的Suite def AllSuite(): allTest = unittest.TestSuite((Suite1(),Suite2())) return allTest #运行的时候,可以根据不同的要求,运行不同的Suite,或者全部运行,这样就方便管理每次运行的case if name == 'main': runner = unittest.TextTestRunner() runner.run(AllSuite())
以上がPython Unittest を使用して自動単体テストを実行する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。