pythonインタフェース自動化テスト-データ駆動DDTモジュールの簡単な使用
13000 ワード
DDT簡単な紹介名称:Data-Driven Tests,データ駆動テスト の役割:外部データセットによって試験例の実行 を駆動する.コアの考え方:データとテストコードの分離 適用シーン:同じ動作を実行するための外部データのセット の利点:テストデータが大幅に変化する場合、テストコードは を一定に保つことができる.実際項目:excelはテストデータを格納、ddtはテストデータをユニットテストフレームワーク(テスト例)に読み出し、htmlレポート に出力する.
データ駆動とは
データの変更は自動化テストの実行を駆動し、最終的にテスト結果の変更を引き起こす.率直に言えば、パラメータ化の応用です.
DDT基礎使用(一):基礎データ型の伝達
テスト結果
ナレッジポイントを含める
DDTを使用するにはまずユニットテストクラスに@ddtを付ける
DDT基礎使用(二):複雑なデータ構造を伝達する
テスト結果
ナレッジポイントを含める@unpack:複雑なデータ構造が伝達される場合に使用します.たとえば、メタグループまたはリストを使用して@unpackを追加すると、ddtは自動的にメタグループまたはリストを複数のパラメータに対応します.辞書はこのように処理することもできる unpackが追加されていない場合test_caseメソッドのパラメータは1つしか記入できません.例えば、タプルの例 unpackを追加すると、伝達されたデータ量が一致する必要があります.リストの例のように、各リストには3つのデータが固定されています.マルチパスまたは少ないパスでは、test_caseメソッドのパラメータも3つ書く必要があります. に一致する必要があります.伝達されたデータが辞書タイプである場合、各辞書のkeyが一致することに注意してください.test_caseのパラメータの命名も一致しなければならない.辞書の例のように、2つの辞書のkeyはvalue 1とvalue 2であり、方法のパラメータも である.送信されたデータは、メタグループ2、リスト2のような変数によって、変数の前に* を加える必要がある.
DDTベース使用(三):jsonファイルの転送
jsonファイル
ユニットテストクラス
テスト結果
DDTベース使用(四):Yamlファイルの転送
yamlファイル
ユニットテストクラス
テスト結果
データ駆動とは
データの変更は自動化テストの実行を駆動し、最終的にテスト結果の変更を引き起こす.率直に言えば、パラメータ化の応用です.
DDT基礎使用(一):基礎データ型の伝達
# ddt
from ddt import *
# ddt
@ddt
class imoocTest(unittest.TestCase):
# int
@data(1, 2, 3, 4)
def test_int(self, i):
print("test_int:", i)
# str
@data("1", "2", "3")
def test_str(self, str):
print("test_str:", str)
テスト結果
test_int: 1
test_int: 2
test_int: 3
test_int: 4
test_str: 1
test_str: 2
test_str: 3
ナレッジポイントを含める
DDTを使用するにはまずユニットテストクラスに@ddtを付ける
DDT基礎使用(二):複雑なデータ構造を伝達する
from ddt import *
# ddt
@ddt
class imoocTest(unittest.TestCase):
tuples = ((1, 2, 3), (1, 2, 3))
lists = [[1, 2, 3], [1, 2, 3]]
#
@data((1, 2, 3), (1, 2, 3))
def test_tuple(self, n):
print("test_tuple", n)
#
@data([1, 2, 3], [1, 2, 3])
@unpack
def test_list(self, n1, n2, n3):
print("test_list", n1, n2, n3)
# 2
@data(*tuples)
def test_tuples(self, n):
print("test_tuples", n)
# 2
@data(*lists)
@unpack
def test_lists(self, n1, n2, n3):
print("test_lists", n1, n2, n3)
#
@data({'value1': 1, 'value2': 2}, {'value1': 1, 'value2': 2})
@unpack
def test_dict(self, value1, value2):
print("test_dict", value1, value2)
テスト結果
test_dict 1 2
test_dict 1 2
test_list 1 2 3
test_list 1 2 3
test_lists 1 2 3
test_lists 1 2 3
test_tuple (1, 2, 3)
test_tuple (1, 2, 3)
test_tuples (1, 2, 3)
test_tuples (1, 2, 3)
ナレッジポイントを含める
DDTベース使用(三):jsonファイルの転送
jsonファイル
{
"first": [
{
"isRememberMe": "True",
"password": "111111",
"username": "root"
},
"200"
],
"second": [
"{'isRememberMe': True, 'password': '1111111', 'username': 'root'}",
"406"
],
"third": [
1,
2
],
"four": "123123"
}
ユニットテストクラス
from ddt import *
# ddt
@ddt
class imoocTest(unittest.TestCase):
@file_data('F:/test/config/testddt.json')
def test_json(self, data):
print(data)
テスト結果
[{'isRememberMe': 'True', 'password': '111111', 'username': 'root'}, '200']
["{'isRememberMe': True, 'password': '1111111', 'username': 'root'}", '406']
[1, 2, 3, 4]
123123
DDTベース使用(四):Yamlファイルの転送
yamlファイル
unsorted_list:
- 10
- 15
- 12
sorted_list: [ 15, 12, 50 ]
ユニットテストクラス
from ddt import *
# ddt
@ddt
class imoocTest(unittest.TestCase):
@file_data('F:/test/config/testddt.yaml')
def test4(self, data):
print("yaml", data)
テスト結果
yaml [10, 15, 12]
yaml [15, 12, 50]