2017-03-06 9 views
0

Shodanデータをテストしたい。データには、タイムスタンプ、クローラーID、サーバーOSなどのフィールドが含まれます。これらはすべての要求で変更されます。うわー、私はそれらをテストすべきですか?UnitTesting Shodanデータ

初段JSONデータ:

{ 
    "city": "Mountain View", 
    "region_code": "CA", 
    "os": null, 
    "tags": [], 
    "ip": 134744072, 
    "isp": "Google", 
    "area_code": 650, 
    "dma_code": 807, 
    "last_update": "2017-03-04T13:54:57.176297", 
    "country_code3": "USA", 
    "country_name": "United States", 
    "hostnames": [ 
     "google-public-dns-a.google.com" 
    ], 
    "postal_code": "94035", 
    "longitude": -122.0838, 
    "country_code": "US", 
    "ip_str": "8.8.8.8", 
    "latitude": 37.385999999999996, 
    "org": "Google", 
    "data": [ 
     { 
      "_shodan": { 
       "options": {}, 
       "id": null, 
       "module": "dns-udp", 
       "crawler": "122dd688b363c3b45b0e7582622da1e725444808" 
      }, 
      "hash": -553166942, 
      "os": null, 
      "opts": {}, 
      "ip": 134744072, 
      "isp": "Google", 
      "port": 53, 
      "hostnames": [ 
       "google-public-dns-a.google.com" 
      ], 
      "location": { 
       "city": "Mountain View", 
       "region_code": "CA", 
       "area_code": 650, 
       "longitude": -122.0838, 
       "country_code3": "USA", 
       "country_name": "United States", 
       "postal_code": "94035", 
       "dma_code": 807, 
       "country_code": "US", 
       "latitude": 37.385999999999996 
      }, 
      "timestamp": "2017-03-04T13:54:57.176297", 
      "domains": [ 
       "google.com" 
      ], 
      "org": "Google", 
      "data": "\nRecursion: enabled", 
      "asn": "AS15169", 
      "transport": "udp", 
      "ip_str": "8.8.8.8" 
     } 
    ], 
    "asn": "AS15169", 
    "ports": [ 
     53 
    ] 
} 

私のテストファイル:

def test_shodan_api(): 
    assert shodan_data == ??? 
+0

文法や更新されたタグをクリーンアップ。より良い説明が助けになるでしょう! – AlG

答えて

0

私はあなたが缶詰のデータを使用して実際に受信したデータを比較し、事実上つまずくするとしているいくつかの部分(タイムスタンプ)はそれぞれの呼び出しで異なり、したがって、完全なデータは、実際のデータと正確には一致しません。

私は缶詰のデータと受信データの両方からタイムスタンプを削除し、残りの部分を比較することを提案する:

del received_data['last_update'] 
del canned_data['last_update'] # you probably want to do this prior to canning the data ;-) 

assert_equal(received_data, canned_data) 
+0

さて、ありがとう!私は思った、私は別の解決策があるかどうか疑問に思っていた。 – nigella

+0

もちろん、多くのオプションがあります。これはブラックリストに似ていますが(望まない部分を削除します)、ホワイトリストを使うこともできます:特定の値だけを比較する: ''...'、 '...'、...のキーの場合:assert_equal(received_data [キー]、canned_data [キー]) ' – Alfe

+0

Btw、あなたはここに新しいようですので、StackOverflowへようこそ!貴重な答えが見つかった場合は、それをアップアップすることができます(答えの左上の三角形)。回答があなたの問題を解決したと思われる場合は、それを受け入れるように自由にしてください(答えの灰色のチェックマーク)。答えが役に立たない場合は、自由に下向きの三角形を押してください。具体的な「ありがとう」コメントは通常は必要ではなく、一般的には投稿を小さくすることをお勧めします。 – Alfe

関連する問題