インターフェイステストのDDT、純粋なコードの実際の戦闘、学習

DDT(データ駆動型テスト)は、自動テストの実行を促進し、最終的にテスト結果に変化をもたらすデータの変更として単純に理解されます。外部データソースを使用して、入力値と出力値、および期待値のパラメーター化を実現し、テストでハードコードされたデータを使用しないようにします。

1つは、ddtモジュールをインストールする

pip install ddt

ddtには4つのモードがあります:importdecorator @ddt; import data @data; split data @unpack; import external data @file_data

第二に、パラメータ化の方法

1.タプルデータを読み取ります

必ずユニットテストフレームワークで使用してくださいimport unittest 
、os from ddt import ddt、data、unpack、file_data 

'' ' NO.1単一の要素セット' '' 
@ddt 
class Testwork(

    unittest.TestCase ):@ data(1、 2,3)
    def test_01(self、value):#valueは、データの受信に使用されます
        print(value)
if __name__ == '__ main __':unittest.main 
    ()
result:
=> 1 
  2 
  3 

'' 'NO.2分解されていない要素の複数のグループ '' ' 
@ddt 
class Testwork(

    unittest.TestCase ):@ data((1,2,3)、(4,5,6))
    def test_01(self、value):
        print(value)

if __name__ == '__ main __':unittest.main 
    ()
結果:
=>(1、2、3)
  (4、5、6)

'' 'NO.3マルチグループ分解要素' '' 
@ddt 
class Testwork(

    unittest.TestCase ):@ data((1,2,3)、(4,5,6))
    @ unpack #Split data 
    def test_01 (self、value1、value2、value3):データのセットには3つの値があるため、__ name__ == '__ main __'の場合は3つの正式なパラメーター
        print(value)を設定します
:unittest.main 
    ()
result:
=> 1 2 3 
  4 5 6

2.リストデータを読み取る

import 
unittest 、os from ddt import ddt、data、unpack、file_data 

'' ' NO.1要素の複数のグループは分解されません' '' 
@ddt 
class Testwork(

    unittest.TestCase ):@ data([{'name': 'lili' '年齢':12}、{ 'セックス': '男性'、 '仕事': '先生'}])
    デフtest_01(自己):
        プリント()

の場合__name__ == '__ MAIN__':
    unittest.main ()
結果:
=> [{'name': 'lili'、 'age':12}、{'sex': 'male'、 'job': 'teacher'}] 
※上記の結果が表示されます:使用できませんリクエストデータリクエストに対してはあまり実用的ではない※ 


'' 'NO.2マルチグループ要素分解' '' 
@ddt 
class Testwork(

    unittest.TestCase ):@ data([{'name': 'lili'、 'age' :12}、{'sex': 'male'、 'job': 'teacher'}]) 
    @ unpack 
    def test_01(self、a、b):
        print(a、b)

if __name__ == '__ main __':unittest.main 
    ()
result:
=> {'name': 'lili'、 'age':12} {'sex': 'male'、 'job': 'teacher'} 
※分割後の実行結果は、[]なしで、リスト内の2つの辞書を分割することになるため、2つのデータがあります※

3.辞書データを読む

import 
unittest 、os from ddt import ddt、data、unpack、file_data 

'' ' *分割するときは、正式なパラメーターと実際のパラメーターのキー値が同じである必要があるため、辞書の読み取りは特別です。そうでない場合、エラーが報告されます* ' '' 

'' 'NO.1単一のデータセットが分解されていません' '' 
@ddt 
class Testwork(

    unittest.TestCase ):@ data(( 'name': 'lili'、 'age': '16')、( 'sex': 'female'、 'job': ' 
    nurser '})def test_01(self、a):
        print(a)

if __name__ == '__ main __':unittest.main 
    ()
結果:
=> {'name': 'lili' 、 'age': '16'} 
  {'sex': 'female'、 'job': 'nurser'} 
※上記操作の結果データは、リクエストのリクエストパラメータとして使用できます〜!


'' 'NO.2マルチデータ分割、注目が集まる' ''

    def test_01(self、name、age):
        print(name、age)

if __name__ == '__ main __':unittest.main 
    ()
result:
=> lili 16 
  female Nurser 
※要点:まず結果に表示されるデータが辞書の値であり、キー値は出力されません。 @dataのデータキー値とdefメソッドの正式なパラメータ名は一貫している必要があります。一貫していないと、印刷時に説明できないパラメータエラーが報告されます。※※

4.jsonファイルデータを読み取ります

#data_json.json文件
{ 
    "test_case1":{ 
        "key": "value1"、
        "status_code":200 
    }、
    "test_case2":{ 
        "key": "value2"、
        "status_code":200 
    }、
    "test_case3": { 
        "key": " 
        value3 "、"status_code":200 
    } 
} 


#python读取json文件
@ ddt
クラスInterfaceTest(unittest.TestCase ):

    def setUp(self):
        self.url = "http://httpbin.org / get " 

    def tearDown(self):
        print(self.result)

    @file_data(" data_json。json ") 
    #同じレベルのディレクトリにない場合は、追加の処理が必要ですdef test_get_request(self、key、status_code):
        r = requests.get(self.url、params = {"key":key})
        self.result = r.json()
        self.assertEqual(r.status_code、status_code)

if __name__ == ' __ main __ ':
    unittest.main ()


おすすめ

転載: blog.51cto.com/xqtesting/2561699