Python 字典在测试工具场景中的小使用。

陈子昂 · 2020年03月05日 · 748 次阅读

文章说明

不是讲语言字典也就那点东西,是开发工具中的一些场景,帮助打开其他思路的。

自动化场景

  • 字典在内存里可以做自动化里面链接入位置管理

比如 {"手机 devicesId1":布尔,"手机 devicesId2":布尔}
定期检测,就字典对象 [key]=value 形式自动覆盖或者添加。

对自动化上下文场景的记录,维护一个字典,往后追加,当然是可以用链表。
如果当前场景多次还是定位不到复位到上个字典的位置。
每次跑完或者切换手机可以复位字典,也可以写在析构函数位置。
存数字更好,0 代表没有链接,1 代表链接上第一个场景,2,3,4,5 分别代表不同界面和场景号可以浮点数类型。比如 1.0 +.1(如果检查点过了就是加 0.1)就是 1.1,也就是 1-1 是不是很不错。
最后手机自动断开 phone_list["手机 deviceId"]=0

  • 传入手机信息对象

    def run(p):
    p.phone_name,p.package_name,p.version
    

    这里的 p 就是传入手机信息对象,这些属性先预设好或者通过数据库载入。能用.是因为是一个 pb 的对象。
    pb 对象是一种结构体结构,也是可以转换成字典。如果这里要用字典也是一样的,就是把.key 改成 get(key)

  • 元组为 key
    使用元组作为字典的 key 这个也是合法的,元组里面有 2 个对象,并且不可变的,2 个对象提供了更多的数据处理组合。
    比如自动化里面,用字典存元素的相对路径,元组第一个位置是说这个路径所处于的层级是第几层,那边如果往上找其他对象这个就是一个参考,为啥这么做可以思考下,第二个位置就是路径地址了。
    还有就是存移动前位置,后面存移动后位置,value 里面写验证条件,这些变换用法太多了。
    补充:在实时要求高的函数不能影响超过 50ms 的,可以避免这种解构后处理的写法,自动化不差这点时间没关系。

网络协议

管理协议和数据包格式
proto_list={"游戏名称 “:函数名称,...多个} 注意这里函数名称不带括号
传入压包函数先判断下 是否在 proto_list.keys() 对象里面。

proto_list ={
      "游戏名称“:函数名称
}

def dgame_protocol(body_data,api_attr):
     ... 省略内容

def pack_msg(body_data, header_attr=None):
   #传入协议类型
    protocol = header_attr['protocol']
    if protocol in proto_list .keys():
        return  proto_list.get(protocol)(body_data, header_attr)  

proto_list[protocol] 对象是上面说的函数名称,pack_msg 会根据定义游戏名称去找各自的压包结构体。

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册