要約を使ってPython - ユニットテスト
バッチ実行
、unittestのテストスイートの実施形態は、で順次制御を行います
UnitTestをデフォルトのフレームmain()メソッドは、順序、数字と文字のシーケンスに従ってテストのASCIIコードをロードするには:0〜9、A〜Z
、〜zのデフォルトのメインを使用していない、テストケースを実行する場合( )方法、必要()addTestテストスイートクラスをロードする特定のための方法。
例:
class TestCase01(unittest.TestCase):
def setUp(self):
print("case开始执行")
def tearDown(self):
print("case结束执行")
@classmethod
def setUpClass(cls):
print("case类开始执行")
@classmethod
def tearDownClass(cls):
pass
@unittest.skip("这个case不像执行")
def test_07(self):
print("执行case07")
flag = "adfadfadfadfadsfaqeewr"
s = "fads"
self.assertIn(s, flag, msg="不包含")
@unittest.skip("这个case不像执行")
def test_01(self):
TestCase01.a = 5
print("执行case01")
# res = requests.get(url=url,params=data).json()
data1 = {
"user": "11111"
}
self.assertDictEqual(data1, data)
@unittest.skip("这个case不像执行")
def test_02(self):
print("----------------> 执行case02")
data1 = {
"username": "1111",
"password": "22222"
}
self.assertDictEqual(data1, data, msg="这两个字典不相等")
@unittest.skip("这个case不像执行")
def test_03(self):
print("执行case03")
flag = True
self.assertFalse(flag, msg="不等于True")
@unittest.skip("这个case不像执行")
def test_04(self):
print("执行case04")
flag = False
self.assertTrue(flag, msg="不等于False")
@unittest.skipIf(host != "http://www.imooc.com", "这个case不执行")
def test_05(self):
print("执行case05")
flag = "111"
flag1 = "2222"
self.assertEqual(flag, flag1, msg="两个str不相等")
def test_06(self):
res = request.run_main('get', url, data)
print(res)
if __name__ == "__main__":
# unittest.main()# 默认顺序执行方式
suite = unittest.TestSuite()
'''
# TestSuite 控制执行顺序
suite.addTest(TestCase01('test_06'))
suite.addTest(TestCase01('test_04'))
suite.addTest(TestCase01('test_02'))
suite.addTest(TestCase01('test_05'))
suite.addTest(TestCase01('test_01'))
suite.addTest(TestCase01('test_07'))
runner = unittest.TextTestRunner()
runner.run(suite)
'''
# TestSuite 另一种写法
tests = [TestCase01('test_06'), TestCase01('test_02'), TestCase01('test_03'), TestCase01('test_05'),
TestCase01('test_01')]
suite.addTests(tests)#
runner = unittest.TextTestRunner()
runner.run(suite)
第二に、使用UnitTestをTestLoaderクラスの発見()関数は、より多くのテストケースを実行します
Pythonのunittestのは、補完的な実行順序を()メソッドを発見します
あなたは別のテストファイル、ディレクトリ、あるいは異なるテストに応じて異なる機能を作成することができ、テストファイルはまた、異なる小テスト機能は、異なるクラスに分類されことができ、全体の構造がより明確になるように、クラスのテストケースを書きます
しかし、()addTestを追加することで、テストケースを削除することは非常に面倒になり
TestLoaderクラス提供出会う()メソッドは自動的にテストの.pyファイルを識別することができます。
discover(start_dir,pattern='test*.py',top_level_dir= None)
ディレクトリを指定されたすべてのテストモジュールを見つけ、そしてときにのみロードファイル名に一致して再帰的サブディレクトリ内のテストモジュールで見つけることができます
- start_dir:モジュール名またはテストケースディレクトリをテストするには
パターン=「テスト*用の.pyは、」:実施形態の原理と一致するファイル名を示します。ここでの.pyファイル「テスト」開始時の型と一致する、*任意の数の文字を表し、
テストモジュールの最上位ディレクトリのtop_level_dir =なし、そうでない場合は、最上位のディレクトリ、なしデフォルト
例1:
import unittest
test_dir = './'
#定义测试目录为当前目录
discover = unittest.defaultTestLoader.discover(test_dir,pattern='test*.py')
if __name__ == '__main__':
runner = unittest.TextTestRunner()
runner.run(discover)
ディスカバー()の試験方法に応じて自動的にルックアップディレクトリTEST_DIRテストファイルに一致し、テストスイートを組み立てテストするために見つけ、したがって、直接することができる
方法で実行(実行発見)、検索大幅テストケースの実装を簡素化
例2:
suite = unittest.TestSuite()
all_cases = unittest.defaultTestLoader.discover(PY_PATH,'Test*.py')
#discover()方法会自动根据测试目录匹配查找测试用例文件(Test*.py),并将查找到的测试用例组装到测试套件中
[suite.addTests(case) for case in all_cases]
report_html = BeautifulReport.BeautifulReport(suite)
参考:https://blog.csdn.net/happyuu/article/details/80683161