是否应该将下面的函数中每个步骤单独写一个函数?
def get_disklist(self):
try:
result = ResultInfo()
#获取ip地址
self.logger.step('步骤1: 读取当前pc网卡的IP/MASK/gateway/DNS信息')
hostname = socket.gethostname()
ip_address = socket.gethostbyname(hostname)
if ip_address:
result.add_result(passfail=ResultInfo.PASS, actual_result=ip_address,
expected_result='10.13.36.47',
test_comment='获取ip', item_id='步骤1.1: 读取当前pc网卡的IP信息')
else:
result.add_result(passfail=ResultInfo.FAIL, actual_result=ip_address,
expected_result='10.13.36.47',
test_comment='获取ip', item_id='步骤1.1: 读取当前pc网卡的IP信息')
#获取子网掩码
cmd = 'ipconfig /all' if os.name == 'nt' else 'ifconfig'
output = os.popen(cmd).read()
masks = re.findall(r'子网掩码[^\n]*?(\d+\.\d+\.\d+\.\d+)|netmask[^\n]*?(\d+\.\d+\.\d+\.\d+)', output)
if masks:
result.add_result(passfail=ResultInfo.PASS, actual_result=masks,
expected_result="[('255.255.255.0', '')]",
test_comment='获取子网掩码', item_id='步骤1.2: 读取当前pc网卡的MASK信息')
else:
result.add_result(passfail=ResultInfo.FAIL, actual_result=masks,
expected_result="[('255.255.255.0', '')]",
test_comment='获取子网掩码', item_id='步骤1.2: 读取当前pc网卡的MASK信息')
#获取网关
gateways = netifaces.gateways()
default_gateway = gateways.get('default', {}).get(netifaces.AF_INET, [None])[0]
if default_gateway:
result.add_result(passfail=ResultInfo.PASS, actual_result=default_gateway,
expected_result='10.13.36.1',
test_comment='获取网关', item_id='步骤1.3: 读取当前pc网卡的gateway信息')
else:
result.add_result(passfail=ResultInfo.FAIL, actual_result=default_gateway,
expected_result='10.13.36.1',
test_comment='获取网关', item_id='步骤1.3: 读取当前pc网卡的gateway信息')
#获取DNS服务器
output = os.popen('ipconfig /all').read()
dns_servers = re.findall(r'DNS 服务器[^\n]*?(\d+\.\d+\.\d+\.\d+)', output)
#保存文件
if dns_servers:
result.add_result(passfail=ResultInfo.PASS, actual_result=dns_servers,
expected_result= "['10.13.1.2']",
test_comment='获取DNS服务器', item_id='步骤1.4: 读取当前pc网卡的DNS信息')
else:
result.add_result(passfail=ResultInfo.FAIL, actual_result=dns_servers,
expected_result="['10.13.1.2']",
test_comment='获取DNS服务器', item_id='步骤1.4: 读取当前pc网卡的DNS信息')
a = str(ip_address)
b = str(masks)
c = str(default_gateway)
d = str(dns_servers)
e = a + b + c + d
filename = "output.txt"
result_dir = "result"
filepath = os.path.join(result_dir, filename)
with open(filepath, 'w', encoding='utf-8') as f:
f.write(e)
self.logger.step('步骤2: 读取当前pc的盘符')
dut_wan_static_ip = [f"{d}:" for d in string.ascii_uppercase if os.path.isdir(f"{d}:")]
# self.logger.info(f'dut_wan_static_ip is {dut_wan_static_ip}')
if dut_wan_static_ip:
result.add_result(passfail=ResultInfo.PASS, actual_result=dut_wan_static_ip,
expected_result="['C:', 'D:', 'E:', 'F:']",
test_comment='获取盘符', item_id='步骤2: 读取当前pc的盘符')
else:
result.add_result(passfail=ResultInfo.FAIL, actual_result=dut_wan_static_ip,
expected_result="['C:', 'D:', 'E:', 'F:']",
test_comment='获取盘符', item_id='步骤2: 读取当前pc的盘符')
self.logger.step('步骤3: 读取当前pc的时间并判断')
current_time_obj = datetime.now().replace(microsecond=0)
if current_time_obj:
result.add_result(passfail=ResultInfo.PASS, actual_result=current_time_obj,
expected_result="当前时间",
test_comment='获取当前时间', item_id='步骤3.1: 读取当前pc的时间')
else:
result.add_result(passfail=ResultInfo.FAIL, actual_result=current_time_obj,
expected_result="当前时间",
test_comment='获取当前时间', item_id='步骤3.1: 读取当前pc的时间')
# 判断当前时间和2024年中秋日期
mid_autumn_2024 = datetime(2024, 9, 17)
# 判断逻辑
if current_time_obj >= mid_autumn_2024:
result.add_result(passfail=ResultInfo.PASS, actual_result=current_time_obj,
expected_result="当前时间",
test_comment='判断当前日期是否迟于2024中秋', item_id='步骤3.2: 读取当前pc的时间并判断')
else:
result.add_result(passfail=ResultInfo.FAIL, actual_result=current_time_obj,
expected_result="当前时间",
test_comment='判断当前日期是否迟于2024中秋', item_id='步骤3.2: 读取当前pc的时间并判断')
self.logger.step('步骤4: 计算斐波那契数列前100位的总和和时间')
start_time = time.time()
sum_result, sequence = fibonacci_sum(100)
end_time = time.time()
if sum_result == 927372692193078999175:
result.add_result(passfail=ResultInfo.PASS, actual_result=sum_result,
expected_result='927372692193078999175',
test_comment='计算前100项和', item_id='步骤4.1: 计算斐波那契数列前100位的总和')
else:
result.add_result(passfail=ResultInfo.FAIL, actual_result=sum_result,
expected_result='927372692193078999175',
test_comment='计算前100项和', item_id='步骤4.1: 计算斐波那契数列前100位的总和')
if start_time - end_time != None:
result.add_result(passfail=ResultInfo.PASS, actual_result=start_time - end_time,
expected_result='0',
test_comment='计算时间', item_id='步骤4.2: 计算斐波那契数列前100位的总和时间')
else:
result.add_result(passfail=ResultInfo.FAIL, actual_result=start_time - end_time,
expected_result='0',
test_comment='计算时间', item_id='步骤4.2: 计算斐波那契数列前100位的总和时间')
self.logger.step('步骤5: 抓包30s分析tcp,udp,icmp')
sniff(filter="tcp or udp or icmp", prn=packet_handler, timeout=30)
if counters['TCP']:
result.add_result(passfail=ResultInfo.PASS, actual_result=counters['TCP'],
expected_result='大于0',
test_comment='TCP数量', item_id='步骤5.1: 抓包30s分析tcp')
else:
result.add_result(passfail=ResultInfo.FAIL, actual_result=counters['TCP'],
expected_result='大于0',
test_comment='TCP数量', item_id='步骤5.1: 抓包30s分析tcp')
if counters['UDP']:
result.add_result(passfail=ResultInfo.PASS, actual_result=counters['UDP'],
expected_result='大于0',
test_comment='UDP数量', item_id='步骤5.2: 抓包30s分析udp')
else:
result.add_result(passfail=ResultInfo.FAIL, actual_result=counters['UDP'],
expected_result='大于0',
test_comment='UDP数量', item_id='步骤5.2: 抓包30s分析udp')
if counters['ICMP'] != None:
result.add_result(passfail=ResultInfo.PASS, actual_result=counters['ICMP'],
expected_result='0',
test_comment='ICMP数量', item_id='步骤5.3: 抓包30s分析icmp')
else:
result.add_result(passfail=ResultInfo.FAIL, actual_result=counters['ICMP'],
expected_result='0',
test_comment='ICMP数量', item_id='步骤5.3: 抓包30s分析icmp')
return result