项目实战3-设备模拟工具
我们通过一个项目来锻炼 Python 做测试开发工具的能力。
可以微信咨询 byhy44
,参加实战班 或者 购买视频讲解和代码 。
您需要高效学习,找工作? 点击咨询 报名实战班
点击查看学员就业情况
概述
实战要求开发一款 测试工具,可以用来 模拟设备 对接 测试 互联网生活服务系统
要求做成一个 MDI 多功能子窗口的 图形界面程序,方便公司内部使用。 界面如下
锻炼本项目实战,需要具备的基础知识点包括:
-
比较扎实的 Python语言基础
-
比较了解线程、Socket网络编程
-
有一定的 Python Qt 图形界面编程能力
下面我们通过分阶段的实战练习,来一步步的开发这个软件。
实战1:充电站模拟设备 界面1
点击这里 观看具体的题目要求
实现一个窗口,里面容纳6个插座控件,水平排列,并且能随着主窗口的缩放而自动调整位置
并且光标悬停在插座控件上时,可以改变背景色
实战2:充电站模拟设备 界面2
点击这里 观看具体的题目要求
在上次练习的基础上,实现 窗口里面增加一个设备面板,有两个按钮/指示灯,
左边的 将来作为 连接/断连 按钮/指示灯
右边的 将来作为 显示设备的二维码 按钮
同样要求,设备面板里面的按钮 能随着主窗口的缩放而自动调整位置
实战3:充电站模拟设备 界面3
点击这里 观看具体的题目要求
在上次练习的基础上,
设备面板添加边框,并且添加设备面板和充电口之间的连线
并且能随着主窗口的缩放而自动调整连线位置
实战4:模拟设备和RC的连接认证
点击这里 观看具体的题目要求
本次练习,需要大家实现 模拟设备 和 RC 的连接和认证,并且实现心跳机制
暂时不用实现和图形界面相关的功能。
点击这里,阅读 Elife系统RF接口 文档, 这是 Elife系统 设备和RC之间的接口文档
根据说明,下载、 激活、运行 Elife-RC
RC的默认监听地址是 本机的 47555 端口
目前RC系统中有如下 设备,可以使用
充电设备
设备编号:aaaaaaaa
共享密钥: hypih74vidyig771hsce6utu4v5tn4rl
充电设备
设备编号:bbbbbbbb
共享密钥:yfymn3vyoxxiamxagu4btsek6qezfprt
洗车设备
设备编号:cccccccc
共享密钥:a4pqk4dcxnjvmoj81no9n6rn6hcujs8i
本次练习比较有一些难度,涉及到的基础知识点包括
-
TCP Socket 编程
-
多线程开发
-
哈希和加密
实战5:和RC通讯功能 集成到界面
点击这里 观看具体的题目要求
将界面和RC通讯功能结合起来。
做到:
在界面上点击连接指示灯,就和RC建立连接并改变指示灯颜色
再次点击断开连接,并改变指示灯颜色
当RC关闭连接时,比如RC进程被关闭, 工具界面也能侦测到,并且改变指示灯颜色
先不考虑多个设备的问题,先做一个充电站对应一个界面控件
实战6:模拟充电站响应
点击这里 观看具体的题目要求
阅读接口文档,实现模拟充电站设备 能响应
获取设备信息请求:get-dev-info-req
、
用户服务开始请求:user-start-svc-req
、
用户服务结束请求:user-stop-svc-req
,
界面正确显示每个充电口的使用状态,可以这次练习实现,也可以下次练习再实现。
测试时,需要模拟用户手机认证使用设备, 当前系统支持支付宝扫码认证。
充电设备认证网址是这样构成的 http://<RC的IP>/api/3a?f=2_<设备编号>
RC的IP 就是你电脑的IP,
比如 RC的IP是 192.168.5.156
,设备编号 是 aaaaaaaa
设备二维码Url就是 http://192.168.5.156/api/3a?f=2_aaaaaaaa
你可以用下面两种方法进行用户登录系统,进行测试
方法1: 电脑访问
拷贝Url到 电脑浏览器 进行访问,
会重定向到支付宝扫码认证界面
手机打开支付宝扫码确认后, 电脑浏览器会模拟手机上登录设备使用界面
方法2: 手机访问
确保手机和运行RC的电脑处于同一个局域网内。
拷贝Url到可以url呈现二维码的网站,比如 https://cli.im/url,
产生url对应的二维码
手机支付宝扫码,确认后就会手机登录使用界面。
注意:这种方式由于RC是局域网电脑,和手机是同一网段。
不知为何,苹果手机好像不行。
如果确认不行,就使用第一种方式。
实战7:界面上的 设备属性功能
点击这里 观看具体的题目要求
界面添加 属性设置表格,如下所示
做到
-
设备模拟控件 和 属性表格 之间的边界可以拖动,调整边界的位置 (使用分裂器)
-
能以界面设备属设置 进行RC的连接和消息收发
-
界面正确显示每个充电口的使用状态
先不考虑多个设备的问题,先做一个充电站对应一个界面控件
实战8:支持模拟多个充电站设备
点击这里 观看具体的题目要求
1 - 主界面添加工具栏, 工具栏上有文字按钮 添加、删除、保存。
本次练习先实现其中添加按钮的功能,可以添加多个模拟充电站设备
1 - 实现界面左边的充电站列表,当前和RC连接上的设备绿色显示,否则灰色
2 - 点击充电站列表项,切换到该模拟设备,展示当前的连接状态和充电位 使用状态
3 - 注意,非当前显示的充电站,状态产生的改变也要支持好。
比如:当前显示充电站A,
充电站B连接断开了, 界面左边也能显示连接状态变更为灰色
充电站B某个充电口开始使用、停止使用,能响应更新状态,再切换到显示充电站B时,能正确显示。
实战9:充电站设备属性保存到文件
点击这里 观看具体的题目要求
- 实现 多个充电站设备属性数据保存到文件。
并且在启动程序时,自动加载文件的功能
-
实现 修改设备名 功能
-
实现 删除设备 功能
删除后,显示第一个设备
如果没有设备了,显示空
实战10:使用图标
点击这里 观看具体的题目要求
实现
-
工具栏使用图标功能
-
设备列表使用图标
并且用不同的图标显示出设备有没有处于连接状态
如下
实战11:二维码功能
点击这里 观看具体的题目要求
实现 点击设备控件控制面板上的二维码按钮,可以显示二维码的功能
显示的二维码对应的URL 是 设备属性中 二维码URL
设置的值的。
并且双击二维码,可以让二维码消失。
请网上搜索 Python 如何显示二维码功能,并且和Qt界面结合起来。
锻炼自行搜索解决问题的能力。
实战12:充电位 结束使用功能
点击这里 观看具体的题目要求
不仅用户可以从手机端点击停止使用服务。
设备端也可也侦测到服务停止事件。
根据接口文档定义 实现 充电站点击处于使用状态的充电位, 发送 dev-stop-svc-req
停止服务消息,并结束使用,使之处于空闲状态
没有要求是:
充电位空闲状态点击无效,因为目前不能直接从设备侧开始服务,这时无法确定客户身份;
充电位使用状态点击停止服务。
实战13:操作树 功能
点击这里 观看具体的题目要求
实现 充电站右边界面的 操作树功能。
实战14:洗车机模拟设备 界面
点击这里 观看具体的题目要求
实现 模拟洗车机功能,本次练习先实现洗车机模拟控件的大体界面。
各种点击处理、消息收发的功能点暂时不用实现
实战15:洗车机模拟设备 功能
点击这里 观看具体的题目要求
实现 所有的模拟洗车机功能:
包括 界面动画显示、设备属性表格、消息收发、右侧操作树
最终的成品是充电站、洗车机 分别作为整个程序的子窗口。
这次练习,我们先实现为单独的程序。
注意:洗车机业务URL后缀是 3 开头(因为洗车机的业务类型是3), 加 设备编号
比如 : http://192.168.5.156/api/3a?f=3_cccccccc
实战16:主界面窗口
点击这里 观看具体的题目要求
实现 主界面窗口 ,把前面实现的模拟充电站、洗车站功能分别作为两个子窗口整合到 主窗口中
主窗口界面要有菜单栏和工具栏
实现 可停靠的日志窗口