-
python入门教程之《自拍教程62》Python adb反复断网联网测试
本站最新发布 Python从入门到精通|Python基础教程
试听地址 https://www.xin3721.com/eschool/pythonxin3721/
试听地址 https://www.xin3721.com/eschool/pythonxin3721/
案例故事: 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运行,当然也可以双击运行。
自拍教程(自动化测试Python教程,武散人编著)
原文链接:https://www.zipython.com/#/detail?id=73de3fe1ef094d44a5613e237106aa68
栏目列表
最新更新
如何使用OS模块中的stat方法
Python os 模块
seek() 方法
python打开文件实例1
Python写入文件
什么是流?
文件操作如何进制逐行读取
Python相对路径
with创建临时运行环境
Python文件操作
.Net Standard(.Net Core)实现获取配置信息
Linux PXE + Kickstart 自动装机
Shell 编程 基础
Shell 编程 条件语句
CentOS8-网卡配置及详解
Linux中LVM逻辑卷管理
1.数码相框-相框框架分析(1)
Ubuntu armhf 版本国内源
Linux中raid磁盘阵列
搭建简易网站
access教程之Access简介
mysql 安装了最新版本8.x版本后的报错:
Mysql空间数据&空间索引(spatial)
如何远程连接SQL Server数据库的图文教程
复制SqlServer数据库的方法
搜索sql语句
sql中返回参数的值
sql中生成查询的模糊匹配字符串
数据定义功能
数据操作功能