推荐星级:
- 1
- 2
- 3
- 4
- 5
Python语言下的自动化测试系统设计
资料介绍
Python语言是一种面向对象的编程语言,具有高效、灵活、简洁的特点,结合一些扩展模块之后,可以迅速地构建一个可以满足用户需求的自动化测试系统,并且将测试的结果显示在显示器上供管理人员查看。文章对基于Python语言的自动化测试系统进行研究认为该系统具有效率高、适应性强、可扩展的特点,在实际的运用中具有非常重要的意义。
部分文件列表
文件名 | 大小 |
Python语言下的自动化测试系统设计.pdf | 2M |
部分页面预览
(完整内容请下载后查看)第 33 期
2017 年 11 月
江苏科技信息
No.33
November,20ꢀ7
Jiangsu Science & Technology Information
Python 语言下的自动化测试系统设计
成孝俊
(盐城机电高等职业技术学校,江苏 盐城 224ꢁꢂ0)
摘要:Python 语言是一种面向对象的编程语言,具有高效、灵活、简洁的特点,结合一些扩展模块之后,可
以迅速地构建一个可以满足用户需求的自动化测试系统,并且将测试的结果显示在显示器上供管理人员
查看。文章对基于 Python 语言的自动化测试系统进行研究认为该系统具有效率高、适应性强、可扩展的
特点,在实际的运用中具有非常重要的意义。
关键词:Python 语言;自动化测试;编程;模块
0
引言
目前,我国编写自动化测试平台使用最多的语言
器。两种测试模块相互配合使用,就可以确保测试系
统能够完成对绝大多数仪器的测试。本自动化测试系
统的虚拟仪器模块可以根据测试人员自身的实际需
要来进行扩展,在对不同的测试对象进行测试的时
候,选择合适的虚拟仪器模块。数据储存管理模块顾
名思义就是对测试数据进行储存。在测试结束时,在
系统控制管理主机的管理下,完成与服务器之间的信
息交换,储存测试数据,实现服务器端的信息更新。显
示模块的功能主要是通过浏览器实现对测试数据的
实时查看。
是 Lab-VIEW 语言,这种语言可以快速地编写出美观
实用的图形界面,但是对数据的调用比较复杂,使用
[ꢀ]
不方便,影响自动化测试系统的性能 。而且,Labꢃ
VIEW 所开发的自动化测试系统在后期进行升级调
整时,需要修改大量的代码,这对大型测试系统来说
是一种致命的缺点。鉴于 LabꢃVIEW 语言开发的系统
平台存在很大的缺陷,本文对基于 Python 语言的自
动化测试系统进行分析讨论。Python 语言具有种类
繁多的扩展程序,可以轻松满足开发人员的各种需
求,对 Matlab 的兼容性也较好,而且 Python 语言可
以把程序代码组织成为独立的逻辑块来进行反复
自动化测试系统的底层驱动使用的是 VISA 接
口,VISA 是一种与仪表总线通信的高级应用程序接
口,其本身独立于测试系统平台之外,也不受总线和
环境的影响。所以绝大多数的主流仪表都支持 VISA,
API,VISA 接口也提供了对 USB,GPIB,串口以及网络
接口等接口的支持,在使用时非常方便。
使用,这就降低了后期升级修改自动化测试系统的
[2]
难度
基于 Python 语言的自动化测试系统组成
基于 Python 语言的自动化测试系统由许多个子
。
1
本自动化测试系统的软件系统主要由 Python 脚
本,Pyivi,Pyvisa 和 Webꢄpy 模块搭建而成。在测试程
序开始运行之后,立即打开 80 端口,对外界的 HTTP
信号进行响应,然后在测试电脑上运行浏览器窗口来
访问本机浏览器实现对数据的显示。本自动化测试系
统一共有 3 个终端访问:(ꢀ)测试人员可以通过本机的
测试界面实现对测试过程的管理和测试结果的查看,
其中包括测试型号、测试状态、测试结果等,供测试人
员甄别产品质量。(2)远程管理界面可以实现对测试
过程的远程监控,包括测试型号、测试的数量、测试的
速度大小、产品的通过率等。(3)远程总界面可以完成
对不同生产测试线的监控,将不同测试线的数据集中
显示在远程总面板中。
测试系统组成,每一个子测试系统都有一个独立的测
试单元,每个子测试系统由一台计算机进行单独调控,
计算机控制着多种设备和仪器,然后通过路由器与数
据服务器相连接,确保测试结果可以及时地传送到数
[3]
据服务器 。每一个子测试系统都与总控制主机相
连,受到总控制主机的管理。在进行测试时,测试管理
主机向每个测试子系统发出指令,确保他们能够协调
统一地完成测试工作。
系统的软件部分主要有仪器发现与驱动管理模
块、仪器测试模块、虚拟仪器模块、数据储存管理模块
和显示模块 5 个模块。仪器发现与驱动管理模块的功
能是识别连入计算机的仪器并自动安装所需的硬件
驱动,然后统计仪器的信息,为后面的测试工作建立
测试基础。仪器的测试模块包括 VISA 测试模块和
IVI 测试模块。VISA 测试模块的主要测试对象是驱动
条件不满足 IVI 测试要求的仪器。IVI 测试模块的测
试对象主要是驱动条件满足 IVI 标准测试需求的仪
2
Python 语言扩展模块概述
在使用 Python 语言来进行自动化测试系统的开发
时,要用到很多的扩展模块,比如 Pyvisa,Pyivi 等。
2.ꢀ Pyvisa 扩展模块
Pyvisa 扩展模块是一个共享库,它的主要功能是
作者简介:成孝俊(ꢀ98ꢀ—),男,江苏盐城人,讲师,硕士;研究方向:软件技术。
- 59 -
第 33 期
2017 年 11 月
No.33
November,20ꢀ7
江苏科技信息·应用技术
将 VISA 库进行 Python 封装,这种包装的后台由 NI-
VISA 进行支持,可以实现对串口、GPIB、GPIB-VXI、VXI、
TCP/IP、USB 接口仪器的支持,功能非常强大。Python
对 VISA 库的封装有顶层结构、中层结构、底层结构 3
种封装结构。顶层结构主要是针对 VISA 资源管理器
和资源操作集进行面向对象的 Python 封装。资源管
理器可以实现对接入仪器的自动检测。用户在使用时
可以通过资源管理器实现对底层资源的访问,还可以
利用资源管理器来打开实例性质的资源派生类对象。
中间结构使用的封装方法是 Python 语言中的绑定
法,主要是对 VISA 库函数中操作指令进行封装。这
种封装的主要作用是让用户可以使用 Python 语言实
现对 VISA 共享库的操作函数的控制和调用。简化了
编程的流程,可以使用 VISA 操作函数来控制仪器。底
层结构实现了对每个函数的参数类型和返回值类型
的定义,所有函数的封装都是采用静态封装法对 VISA
库进行封装。
instrinfo=openinstr.queryꢂ'*IDN?')
# 查询打开仪器的硬件信息,保存在 instrinfo 中
Instrmanufacturer=openinstr.manufacturer_name
# 查询仪器厂商信息
Instrmodelname=openinstr.model_name
# 查询仪器的具体型号
Ivisoftmodes=pyivi.software_modules
# 列出本地安装的所有 IVI 特定驱动
Tktdsmod=ivisoftmods[′tktdslk2k′]
# 访问指定的 tktdslk2k 驱动
Supinstrtype=tktdsmod.specialized_instrument_type
()
# 查询该驱动支持的仪器类型
Drivertype=tktdsmod.flavours()
# 查询该驱动的类型是 IVI-C 还是 IVI-COM
Supmodnames = tktdsmod . supported_instrument_
models)
(
2.2 Pyivi 扩展模块
# 该驱动所支持的仪器型号
Pyivi 扩展模块实现了对 IVI-COM 和 IVI-C 两
种驱动的支持。主要功能是使用 Python 语言实现对
测试主机上的所有 IVI 驱动进行封装,使自动化测试
系统能够满足符合 IVI 驱动标准的仪器完成互换的
要求,能够完成 IVI 引擎所提供的一些功能。Pyivi 扩
展模块使用 ctypes 和 comtypes 对 IVI-COM 和 IVI-C
两种类型的 IVI 驱动进行封装。应用程序可以通过调
用 IVI 驱动来实现仪器之间的互换。Pyivi 扩展模块与
IVI-C 类驱动之间的联系是通过 ctypes 来维持的,与
IVI-COM 类驱动之间的联系是通过 comtypes 来维
持的。
开发者通过上述代码可以查询测试仪器的硬件
信息、测试主机的驱动类型和驱动支持的仪器。
自动化测试系统的测试模块主要由 VISA 测试
模块和 IVI 测试模块两部分组成,其中 VISA 测试模块
主要面向不符合 IVI 规范的测试仪器;IVI 测试模块
主要面向符合 IVI 规范的仪器。除此之外,IVI 测试模
块也可以完成一部分的 VISA 测试功能,同时还可以
实现仪器设备之间的交换。建立好的仪器连接以绘画
引用 iviscope 返回,可以实现对连接仪器的控制。在接
入 IVI 仪器后,仪器发现与管理模块就可以获得硬件
的参数信息。在接入 IVI 仪器之后,Pyivi 扩展模块就
可以自动地去寻找和接入的 IVI 仪器相匹配的 IVI
驱动,完成从类 IVI 驱动到特定 IVI 驱动的转化,进而
完成从特定 IVI 驱动到实体仪器的转化,是实现仪器
互换的基础,是本自动化测试系统的核心部分,也是
自动化测试功能实现的保证。
3
系统模块的功能实现方案
在进行仪器发现与驱动管理模块的设计时,开发
者首先要使用开发程序实现对 Pyvisa 和 Pyivi 模块的
导入,在导入完成之后,调用 Pyvisa 模块的资源管理
器来完成对与管理计算机相连接的各种仪器的扫描。
然后调用 Pyivi 模块来实现对驱动程序的信息,给后
续的测试工作提供铺垫。实际操作时所采用的代码如
下所示:
虚拟仪器模块的开发所使用的扩展模块主要是
PyQt4 和 NumPy。PyQt4 虚拟仪器模块主要应用于自
动化测试系统的界面开发中,而 NumPy 主要是对采
[4]
集数据的处理 。虚拟仪器模块的整体开发思路是
Import pyvisa as visa
Import pyivi
将界面和逻辑控制系统分开,独自开发设计,这样
就可以实现数据采集、处理功能和显示功能各自独立,
互不影响。然后再使用 QObject 类中的 connec(t )方
法实现界面按钮信号与逻辑控制模块的绑定。在利
用 PyQt4 进行界面开发的主要步骤:(ꢀ)开发人员使用
QtDesigner 来创建 GUI 界面。(2)开发人员根据开发
需求进行部件添加,在部件添加完成之后,开发人员
利用部件属性编辑器对每个部件的属性进行修改保
存,完成 ui 修改。(3)开发人员使用 Pyuci4 工具将 ui
文件转化为 Python 脚本文件。(4)开发人员通过调用
生成 GUI 的类来运行程序。(5)最后,开发人员对每
rm=visa.ResourceManager()
# 打开默认的本地资源管理器,并以 rm 的形式
返回
rm_list=rm.list_resource([query=u;?*::INSTR'])
# 列出 rm 中扫描到的所有硬件接口仪器
openinstr=rm.open_resource
(resource_name,[[access_mode =<AccessModes.
no_lock:ꢁ>,open_timeout=0])
# 打开 rm 中的一个硬件设备,将会话资源用
openinstr 引用的形式返回
- 6ꢁ -
全部评论(0)