在测试期间模拟dnspython dns查询

2024-09-28 23:37:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我有下面的代码,它使用dnspython查找域的名称服务器,然后在该列表上循环获得每个服务器的IPv4和IPv6地址

我可以模拟resolver_list的结果

但是,我不确定如何或是否可能模拟A和AAAA记录查询的结果,因为这都是同一测试的一部分,而且我已经模拟了dns.resolver.query

    resolver_list = dns.resolver.query(domain, rdtype='NS', tcp=True)
    for ns in resolver_list:
        gtld_ns_server_list.append(ns.to_text().rstrip('.').lower())
        a_records.append(dns.resolver.query(ns.rstrip('.'), "A"))
        aaaa_records.append(dns.resolver.query(ns.rstrip('.'), "AAAA"))

到目前为止,我的模拟是这样的:

        ns = [
            ('ns1.external-server.com', 'NS'),
            ('ns2.external-server.com', 'NS'),
        ]
        responses = [[FakeRR(txt, rdtype=type) for txt, type in ns]]

        def fake_dns_query(*args, **kwargs):
            return responses.pop()

        mocker.patch(
            'site_management.validators.dns.resolver.query',
            fake_dns_query
        )

感谢您的帮助


Tags: in服务器forserverdnsquerylistns
1条回答
网友
1楼 · 发布于 2024-09-28 23:37:29

我想我得到了我需要的。最后,我向responses变量添加了其他列表,然后弹出这些列表,用于对A和AAAA记录进行其他查询

也许还有别的办法,但至少我现在得到了我所期望的

相关问题 更多 >