《自拍教程62》Python adb反复断网联网测试

网友投稿 314 2022-06-26


案例故事: Android App或者系统测试过程中,涉及需要断网异常测试(无网络情况下,App或系统是否提示正常,运行正常),

联网测试(网络恢复的情况下,App或系统是否提示正常,运行正常), 目前基本上设备都具备wifi,4G两种网络,

需要考虑两种网络全部断开, 或者两种网络全部连上,并需要考虑优先使用哪种网络。

准备阶段

android 自带的svc命令,可以实现网络管理。

adb shell svc wifi disable 可以关闭wifi

adb shell svc wifi enable 可以打开wifi

adb shell svc wifi prefer 即wifi+4G一起打开的情况下,可以优先使用wifi通讯

adb shell svc data disable 可以关闭4G数据通讯

adb shell svc data enable 可以打开4G数据通讯

adb shell svc data prefer 即wifi+4G一起打开的情况下,可以优先使用4G通讯

由于测试100次,可以考虑使用random模块实现随机wifi优先或者4G优先。

Python批处理脚本形式

记住批处理脚本的精髓:批量顺序执行语句。

判断字符串值是否相同,尽量多用is 及 is not, 少用== 及 !=

# coding=utf-8

import os

import time

import random

# 反复断网联网100次

for i in range(100):

print("正在进行第%s轮断网 + 联网测试" % i)

os.system("adb shell svc wifi disable")

os.system("adb shell svc data disable")

time.sleep(12) # App需要断网后10秒之后才会弹出无网络体现,所以建议等待12秒

os.system("adb shell svc wifi enable")

os.system("adb shell svc data enable")

perfer = random.choice(["wifi", "4G"])

if perfer is "wifi":

print("优先启用wifi网络")

os.system("adb shell svc wifi perfer")

else:

print("优先启用4G网络")

os.system("adb shell svc data perfer")

time.sleep(15) # wifi连接需要时间,4G拨号上网也需要时间,App识别网络并进行通信也需要时间,所以建议等待15秒

os.system("pause")

Python面向过程函数形式

面向过程函数的编程思维应该是这样的:

你需要多少个功能(函数),才能做成这个事。

最好把功能(函数)都尽量封装好,只暴露一些的参数接口即可。

# coding=utf-8

import os

import time

import random

def enable_network():

'''同时打开wifi,4G网络'''

os.system("adb shell svc wifi enable")

os.system("adb shell svc data enable")

def disable_network():

'''同时关闭wifi,4G网络'''

os.system("adb shell svc wifi disable")

os.system("adb shell svc data disable")

def perfer_network(network):

'''选择以哪种网络优先,是wifi网络,还是4G网络'''

network = network.lower() # 全部转换成小写

if network is "wifi":

print("优先启用wifi网络")

os.system("adb shell svc wifi perfer")

elif network is "4g":

print("优先启用4G网络")

os.system("adb shell svc 4G perfer")

else:

print("只支持2种网络,wifi或者4G")

# 反复断网联网100次

for i in range(100):

print("正在进行第%s轮断网 + 联网测试" % i)

disable_network()

time.sleep(12) # App需要断网后10秒之后才会弹出无网络体现,所以建议等待12秒

enable_network()

perfer = random.choice(["wifi", "4G"])

perfer_network(perfer)

time.sleep(15) # wifi连接需要时间,4G拨号上网也需要时间,App识别网络并进行通信也需要时间,所以建议等待15秒

os.system("pause")

Python面向对象类形式

面向对象类的编程思维应该是这样的:

如果给你一个空白的世界,在这个世界里你需要哪些种类的事物,

这些种类的事物都具备哪些共有的属性与方法,

这些种类(类)的事物(对象),和其他种类(其他类)的事物(其他对象)有什么关系。

尽量把这些类封装好,只暴露对外的属性(变量)和方法(函数)即可。

# coding=utf-8

import os

import time

import random

class NetworkManger(object):

'''网络管理器,其只需要3个方法即可'''

def __init__(self):

pass

def enable_network(self):

'''同时打开wifi,4G网络'''

os.system("adb shell svc wifi enable")

os.system("adb shell svc data enable")

def disable_network(self):

'''同时关闭wifi,4G网络'''

os.system("adb shell svc wifi disable")

os.system("adb shell svc data disable")

def perfer_network(self, network):

'''选择以哪种网络优先,是wifi网络,还是4G网络'''

network = network.lower() # 全部转换成小写

if network is "wifi":

print("优先启用wifi网络")

os.system("adb shell svc wifi perfer")

elif network is "4g":

print("优先启用4G网络")

os.system("adb shell svc 4G perfer")

else:

print("只支持2种网络,wifi或者4G")

# 新实例化类的对象

n_obj = NetworkManger()

# 再反复断网联网100次

for i in range(100):

print("正在进行第%s轮断网 + 联网测试" % i)

n_obj.disable_network()

time.sleep(12) # App需要断网后10秒之后才会弹出无网络体现,所以建议等待12秒

n_obj.enable_network()

perfer = random.choice(["wifi", "4G"])

n_obj.perfer_network(perfer)

time.sleep(15) # wifi连接需要时间,4G拨号上网也需要时间,App识别网络并进行通信也需要时间,所以建议等待15秒

os.system("pause")

运行方式

确保Android设备通过USB线与电脑连接了,adb设备有效连接,

以上代码的3种实现形式都可以直接运行,比如保存为network_test.py并放在桌面,

打开你需要测试的App或跳转到你需要测试的系统的某个界面下,

建议python network_test.py运行,当然也可以双击运行。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:集成学习之Xgboost
下一篇:第一章 编程语言及计算机介绍(第一章二当家)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~