谈一谈鸿蒙系统的xdevice组件
简介
xdevice是OpenHarmony中为测试框架的核心组件,提供用例执行所依赖的相关服务。
xdevice主要包括以下几个主要模块:
- command,用户与测试平台命令行交互模块,提供用户输入命令解析,命令处理。
- config,测试框架配置模块,提供测试平台串口连接方式和USB连接方式的不同配置选项。
- driver,测试用例执行器,提供测试用例分发,执行,结果收集等主要测试步骤定义。
- report,测试报告模块,提供测试结果解析和测试报告生成。
- scheduler,测试框架调度模块,提供不同类型的测试执行器调度的调度功能。
- environment,测试框架的环境配置模块,提供设备发现,设备管理的功能。
- testkit,测试框架工具模块,提供json解析,网络文件挂载等操作。
- resource,测试框架资源模块,提供设备连接配置文件和报告模板定义。
目录
xdevice
├── config # xdevice组件配置
│ ├── user_config.xml # xdevice环境配置
├── resource # xdevice组件资源
│ ├── tools # 版本烧录工具
├── src # 组件源码目录
│ ├── xdevice
├── extension # xdevice扩展模块
│ ├── src # 扩展模块源码
│ └── setup.py # xdevice扩展模块安装脚本
约束
运行环境要求:
- python版本>=3.7.5
- pyserial>=3.3
- paramiko>=2.7.1
- rsa>=4.0
使用
-
安装xdevice
-
打开xdevice安装目录。
-
打开控制台,执行如下命令:
python setup.py install
-
-
安装extension
-
打开extension安装目录。
-
打开控制台,执行如下命令:
python setup.py install
-
-
修改user_config.xml
user_config.xml是框架提供的用户配置文件,用户可以根据自身环境信息配置相关内容,具体介绍如下:
1、environment环境相关配置:
-
设备类型一
说明: ip/port: 表示远程设备地址,默认情况为空,表示使用本地设备,ip地址为127.0.0.1,port为本机hdc启动端口号;sn: 过滤执行测试设备,若设置为SN1,则表示只有设备SN1能够支持后续run命令执行,其他设备分配状态设置为Ignored,不参与命令执行,可通过list devices命令中Allocation字段来查看sn设置,可配置多个sn,中间以;隔开;
-
设备类型二
说明: type: 设备连接方式,com表示连接方式是串口 label: 表示设备种类,如wifiiot serial: 表示一个串口定义 serial/com 表示本地连接的串口,如COM20 serial/type 表示串口类型,cmd是命令串口,deploy是刷机串口,社区版本cmd和deploy使用同一个串口,com值相同 serial/baud_rate、data_bits、stop_bits、timeout: 为串口波特率等串口参数 ,一般采用默认值即可。
2、测试用例目录设置
dir: 指定测试用例目录。
3、nfs挂载
说明: server: nfs挂载配置,label取值为NfsServer。 server/ip: 挂载环境IP地址。 server/port: 挂载环境端口。 server/username: 登录用户名。 server/password: 登录用户密码。 server/dir: 对应挂载的外部路径。 server/remote: nfs服务器与xDevice执行机不在同一台机器时,remote配置为true,否则为false。
-
-
选定任务类型
-
启动框架
-
执行指令
框架指令可以分为三组:help、list、run。在指令序列中,以run为最常用的执行指令。
1、help
输入help指令可以查询框架指令帮助信息。
help: use help to get information. usage: run: Display a list of supported run command. list: Display a list of supported device and task record. Examples: help run help list
说明: help run:展示run指令相关说明 help list:展示 list指令相关说明
2、list
list指令用来展示设备和相关的任务信息
list: This command is used to display device list and task record. usage: list list history list <id> Introduction: list: display device list list history: display history record of a serial of tasks list <id>: display history record about task what contains specific id Examples: list list history list 6e****90
说明: list: 展示设备信息 list history: 展示任务历史信息 list <id>: 展示特定id的任务其历史信息
3、run
run指令主要用于执行测试任务
run: This command is used to execute the selected testcases. It includes a series of processes such as use case compilation, execution, and result collection. usage: run [-l TESTLIST [TESTLIST ...] | -tf TESTFILE [TESTFILE ...]] [-tc TESTCASE] [-c CONFIG] [-sn DEVICE_SN] [-rp REPORT_PATH [REPORT_PATH ...]] [-respath RESOURCE_PATH [RESOURCE_PATH ...]] [-tcpath TESTCASES_PATH [TESTCASES_PATH ...]] [-ta TESTARGS [TESTARGS ...]] [-pt] [-env TEST_ENVIRONMENT [TEST_ENVIRONMENT ...]] [-e EXECTYPE] [-t [TESTTYPE [TESTTYPE ...]]] [-td TESTDRIVER] [-tl TESTLEVEL] [-bv BUILD_VARIANT] [-cov COVERAGE] [--retry RETRY] [--session SESSION] [--dryrun] [--reboot-per-module] [--check-device] [--repeat REPEAT] action task Specify tests to run. positional arguments: action Specify action task Specify task name,such as "ssts", "acts", "hits"
说明: 一个基本的run指令结构如下:
run [task name] -l module1;moudle2
task name:任务类型。一般为ssts、acts、hits。非必选项 -l :指定执行测试用例,多个测试用例,中间用;隔开 module:被测试的模块。一般在testcases目录下存在对应的.json文件 此外,其他参数可以作为约束条件,附加到这个基本指令之上使用。常用的如: -sn: 过滤执行测试设备,若设置为SN1,则表示只有设备SN1执行用例 -c: 重新指定user_config.xml。 -rp: 报告生成路径。默认为xxx/xdevice/reports目录。指定目录后,优先级:指定目录>xxx/xdevice/reports目录。 -tcpath:环境目录,默认为xxx/xdevice/testcases目录。指定目录后,优先级:指定目录>xxx/xdevice/testcases目录 -respath:测试套目录,默认为xxx/xdevice/resource目录。指定目录后,优先级:指定目录>xxx/xdevice/resource目录 --reboot-per-module: 执行前先重启设备
-
查看执行结果
框架执行run指令,控制台会输出对应的log打印,还会生成对应的执行结果报告。如果使用了-rp参数指定报告路径,那么报告就会生成在指定的路径下。否则报告会存放在默认目录。
当前报告目录(默认目录/指定目录) ├── result(模块执行结果存放目录) │ ├── <模块名>.xml │ ├── ... ... │ ├── log (设备和任务运行log存放目录) │ ├── <设备1>.log │ ├── ... ... │ ├── <任务>.log ├── summary_report.html(测试任务可视化报告) ├── summary_report.html(测试任务数据化报告) └── ... ...
相关仓
测试子系统
test_xdevice
test_developertest