2017-03-06 15 views
0

Shodan 데이터를 테스트하고 싶습니다. 데이터에는 타임 스탬프, 크롤러 ID, 서버 OS 등과 같은 필드가 포함됩니다. 이러한 요청은 요청할 때마다 변경됩니다. 와우 내가 그들을 테스트해야합니까?UnitTesting Shodan 데이터

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

물론 다양한 옵션을 사용할 수 있습니다. 이것은 블랙리스트 작성과 유사하지만 원치 않는 부분을 제거하는 경우 화이트 리스팅을 사용할 수 있습니다 : 특정 값만을 비교하십시오 :'[... ','... ', ...] 키 : for assert_equal (received_data [key], canned_data [key])' – Alfe

+0

Btw, 여기 새로 온 것 같으니 StackOverflow에 오신 것을 환영합니다! 귀중한 답을 찾으면 자유롭게 상향시킬 수 있습니다 (답안의 왼쪽 삼각형). 답변으로 문제가 해결되었다고 생각되면 자유롭게 답을 남겨주세요 (답의 회색 체크 표시). 답변이 도움이되지 않는다면 자유롭게 아래로 삼각형을 그려보십시오 (아래쪽 삼각형). 특정 "고맙습니다"의견은 일반적으로 게시물을 작게 유지하는 것이 일반적으로 필요하지 않으며 일반적으로 오히려 낙심됩니다. – Alfe