UnitTesting Shodan数据

时间:2017-03-06 12:52:46

标签: python python-3.x pytest shodan

我想测试Shodan数据。数据包括时间戳,爬虫ID,服务器操作系统等字段。这些内容在每次请求时都会发生变化。哇,我应该测试一下吗?

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 == ???

1 个答案:

答案 0 :(得分: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)