Hypium怎么在多台设备上并行执行测试用例
======================

#### 问题现象

以下两种自动化测试场景，如何实现：

*   多份test.py在多台设备上测试不同的应用。
*   一份test.py脚本，同时测试多台设备。

#### 背景知识

[DevEco Testing Hypium(以下简称Hypium)](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/hypium-python-guidelines#section16890204264419)是HarmonyOS平台的UI自动化测试框架，支持开发者使用python语言为应用编写UI自动化测试脚本，提供**控件定位能力、模拟输入功能、多设备并行操作、生成用例执行报告**等功能。

Hypium支持多设备并行执行测试用例，使用前先参考[安装向导](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/hypium-python-guidelines#section191615399595)完成步骤1到步骤5的安装。

#### 解决方案

1.  场景一：多份test.py在多台设备上执行，新建多个main.py，通过main.py分别运行不同的test.py。
    *   user\_config.xml配置并行设备的sn。
        
        ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/a9/v3/sPlcVFgBTqSGo6LODnwi4g/zh-cn_image_0000002658928845.png?HW-CC-KV=V1&HW-CC-Date=20260709T134421Z&HW-CC-Expire=86400&HW-CC-Sign=1DAAD80281A9D8B530EB39F29E3D209DE7470334292264D34A9CA07051523B7F "点击放大")
        
    *   配置用例的json文件。
        
        ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/27/v3/h6fRHOZMTyqmHh6JvqVxFg/zh-cn_image_0000002628409636.png?HW-CC-KV=V1&HW-CC-Date=20260709T134421Z&HW-CC-Expire=86400&HW-CC-Sign=11C501AE186403CC355EBB8D97451EEF09C76B3F5446CD1F91E8B92FDEACE946 "点击放大")
        
        ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/3e/v3/I_5Z3P_zSUuVgJwRWk6BwA/zh-cn_image_0000002658808895.png?HW-CC-KV=V1&HW-CC-Date=20260709T134421Z&HW-CC-Expire=86400&HW-CC-Sign=A01E130D5303A010F9766675EA0A2BD99F24F4AD74EF49B54524582F7E0C0819 "点击放大")
        
    *   新建main2.py，配置main和main2，对应不同用例和设备。
        
        ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/97/v3/czQHm02KS4KXTWHSGDDwvw/zh-cn_image_0000002628569530.png?HW-CC-KV=V1&HW-CC-Date=20260709T134421Z&HW-CC-Expire=86400&HW-CC-Sign=291716E2F271A550F1999CF02B93926DDED9076FA5A255F10AFD2C4BB6D6B423 "点击放大")
        
        ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/64/v3/Jkf_nHQbROShuo9h3Oc_eQ/zh-cn_image_0000002658928855.png?HW-CC-KV=V1&HW-CC-Date=20260709T134421Z&HW-CC-Expire=86400&HW-CC-Sign=1E80455913C1824C053CDAA2AC85F14C01CE5213494780EB34BFBB8615196458 "点击放大")
        
    *   运行main.py和main2.py。
2.  场景二：单用例在多设备上执行。
    *   新建项目时，点击左侧的DevEco Testing Hypium，选择双设备。或者用例里使用device1、device2区分设备。（如果大于2台设备，可以继续新增，如device3）
        
        ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/d2/v3/WjIme_CrQX-pxC_YEjw7SQ/zh-cn_image_0000002628409640.png?HW-CC-KV=V1&HW-CC-Date=20260709T134421Z&HW-CC-Expire=86400&HW-CC-Sign=9432BB130E97BA8A4C00AF0E3875CCD69FCCB2BCC486887BB8D7043EF41F8CD4 "点击放大")
        
        ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/61/v3/acFI3ySnRqyLU90OWOsX8A/zh-cn_image_0000002658808899.png?HW-CC-KV=V1&HW-CC-Date=20260709T134421Z&HW-CC-Expire=86400&HW-CC-Sign=257D13E23B09F2905A041A1EAF86894037D35A51A57B861B92414EFDDD6CAB53 "点击放大")
        
    *   用例里面步骤分别对应不同设备（device1、device2）。
        
        ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/5e/v3/5r-80W4mRQin40kpcnsN6A/zh-cn_image_0000002628569532.png?HW-CC-KV=V1&HW-CC-Date=20260709T134421Z&HW-CC-Expire=86400&HW-CC-Sign=D2237CA0C4A2B003221AC6500BF74899B9078F3236DD979906C062A0C1F2F746 "点击放大")
        
    *   user\_config.xml配置并行设备的sn。
        
        ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/74/v3/jnEWiL_BRC6giIwoAFpigg/zh-cn_image_0000002658928857.png?HW-CC-KV=V1&HW-CC-Date=20260709T134421Z&HW-CC-Expire=86400&HW-CC-Sign=F720EE85B2D3B281254B443432C92FC3C3A9580CEFEF231F9057478BB23A85AE "点击放大")
        
    *   修改用例的json文件，增加设备（如果是新建项目选择双设备，默认已经配置2台设备）。
        
        ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/44/v3/NWOGteqHTMuz1_Ahm1egUw/zh-cn_image_0000002628409642.png?HW-CC-KV=V1&HW-CC-Date=20260709T134421Z&HW-CC-Expire=86400&HW-CC-Sign=075F1672BBDCC8E1C1421846754F327C45634FCF631A2D4EE533C27D96932069 "点击放大")
        
    *   配置main.py文件，指定运行设备sn号。
        
        ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/1b/v3/Yj5yYiSeRF6lqCJf-TX8rw/zh-cn_image_0000002658808903.png?HW-CC-KV=V1&HW-CC-Date=20260709T134421Z&HW-CC-Expire=86400&HW-CC-Sign=B80C1F2A97818F04EED9B5800A8DF2DAB2D7E7BBE95D8A2A0A3B5858D43869CE "点击放大")
        
    *   运行main文件。

#### 常见FAQ

Q：UiViewer如何实现多设备的连接和切换？

A：UiViewer最多支持同时对两个设备进行投屏，选中想连接的设备，设备编号一个设置为dev1，另外一个设置为dev2，点击确定，即可进行两个设备的投屏。

![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/d9/v3/J1HULcpDTz6F7-6fzIuZGQ/zh-cn_image_0000002628569536.png?HW-CC-KV=V1&HW-CC-Date=20260709T134421Z&HW-CC-Expire=86400&HW-CC-Sign=55C13A97432EE735779F6D70B90A650AA1BE95BA30B8C59F88AF5635F0952044 "点击放大")

如果要进行设备切换，点击右上角的设备切换，回到设备选择页面，重新进行选择即可。

![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/b2/v3/-8G2qb97QTG_XcHJyx1oIQ/zh-cn_image_0000002658928861.png?HW-CC-KV=V1&HW-CC-Date=20260709T134421Z&HW-CC-Expire=86400&HW-CC-Sign=EF5F78D753348BE6D1EFD516BBB2DB43163C69C63BB2B58264FB3A30B1A4BDFD "点击放大")

Q：如何测试不同的应用。

A：Hypium测试的对象是设备，而不是指定应用。针对特定应用的测试，可以编写测试用例，通过start\_app打开指定应用，再执行对应的用例。

Q：Hypium是否支持选定模拟器进行测试？

A：支持，不管是模拟器还是真机，在user\_config.xml指定设备的sn即可。

<?xml version="1.0" encoding="UTF-8"?>
<user\_config>
    <environment>
        _<!-- type: 设备连接方式,usb-hdc表示使用hdc命令控制设备(默认) -->_
        <device type="usb-hdc">
            _<!-- ip: 远端设备地址,ip和port为空时使用本地设备,非空时使用远端设备 -->_
            <ip></ip> 
           _ <!-- port: 远端设备端口号 -->_
            <port></port> 
            _<!-- sn: 设备SN号列表,SN之间用分号";"分隔,sn字段为空时使用所有本地设备,非空时使用指定的sn设备 -->_
            <sn></sn> 
        </device>
    </environment>
    <testcases>
        _<!-- 指定测试用例目录，为空则默认设置为当前项目下的testcase文件夹 -->_
        <dir></dir>
    </testcases>
    <resource>
        _<!-- 指定资源目录，为空则默认设置为当前项目下的resource文件夹 -->_
        <dir></dir>
    </resource>
    _<!-- 默认为INFO，如需更详细信息可设置为DEBUG -->_
    <loglevel>DEBUG</loglevel>
    <devicelog>
       _ <!--在测试用例结束后额外后拉取以下路径的日志到报告下-->_
        <dir>/data/log/tee;/data/log/test</dir>
        _<!--控制hilog日志等级，默认值为INFO-->_
        <loglevel>DEBUG</loglevel>    
        _<!--控制是否在拉取日志后设备端的日志，默认值为true-->_
        <clear></clear>                
        _<!--控制是否抓取设备日志，默认值为ON，OFF时候上述两个标签不生效-->_
        <enable>ON</enable>            
    </devicelog>
</user\_config>

Q：Hypium是否支持不输出日志？

A：框架会进行正常的日志打印，并会在测试工程的reports目录或者指定目录生成日志。但可以通过user\_config.xml把日志等级调到最高（ERROR），并把设备日志关掉，从而减少报告内容。

<?xml version="1.0" encoding="UTF-8"?>
<user\_config>
    <environment>
        <device type="usb-hdc">
            <sn></sn>
        </device>
    </environment>
    <testcases>
        <dir></dir>
    </testcases>
    <loglevel>ERROR</loglevel>
    <devicelog>OFF</devicelog>
</user\_config>