当前位置: 移动技术网 > IT编程>脚本编程>Python > 《自拍教程62》Python adb反复断网联网测试

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

2020年04月26日  | 移动技术网IT编程  | 我要评论

中国电信合约机,幻灵游侠欢乐谷,龙口新发展论坛

案例故事: android app或者系统测试过程中,涉及需要断网异常测试(无网络情况下,app或系统是否提示正常,运行正常),
联网测试(网络恢复的情况下,app或系统是否提示正常,运行正常), 目前基本上设备都具备wifi,4g两种网络,
需要考虑两种网络全部断开, 或者两种网络全部连上,并需要考虑优先使用哪种网络。


准备阶段

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

  1. adb shell svc wifi disable 可以关闭wifi
  2. adb shell svc wifi enable 可以打开wifi
  3. adb shell svc wifi prefer 即wifi+4g一起打开的情况下,可以优先使用wifi通讯
  4. adb shell svc data disable 可以关闭4g数据通讯
  5. adb shell svc data enable 可以打开4g数据通讯
  6. adb shell svc data prefer 即wifi+4g一起打开的情况下,可以优先使用4g通讯
  7. 由于测试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教程,武散人编著)
原文链接:
也可关注“武散人”微信订阅号,随时接受文章推送。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网