HarmonyOS鸿蒙Next中关于UI自动化测试,测试套脚本继承testcase类后,无法运行其他用例

HarmonyOS鸿蒙Next中关于UI自动化测试,测试套脚本继承testcase类后,无法运行其他用例 我在写UI自动测试时,使用的是多用例模式(测试套),如下图。一个简单的登录测试

case就是:清除后台进程(保证测试环境干净)—打开app—输入账号密码登录—退出app—清除后台进程。

cke_31210.png

然后我根据官方文档描述(如下图):

cke_34680.png

把case的<清除后台进程>这个步骤写在测试套脚本里。这样在我的case运行前会先运行测试套脚本里的<清除后台进程>,如下图:

cke_58218.png

PS: 我的实现方式是hdc命令+hypium,所以我继承了testcase这个类。cke_116680.png

一切准备就绪后,我就开始运行。

cke_75346.png

运行发现,根本没执行上面的TC_002到TC_005的case.

经过多番尝试,我发现是因为我继承了testcase这个类,他把user_login当作用例。


更多关于HarmonyOS鸿蒙Next中关于UI自动化测试,测试套脚本继承testcase类后,无法运行其他用例的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

开发者您好,目前不支持对class user_login(TestSuite,TestCase)的这种修改,您可以自定义一个class,然后在测试套py文件中import调用。

cke_1169.png

更多关于HarmonyOS鸿蒙Next中关于UI自动化测试,测试套脚本继承testcase类后,无法运行其他用例的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS Next中,UI自动化测试套脚本继承TestCase类后无法运行其他用例,通常是由于测试框架的继承机制或测试套配置问题导致。检查测试套的配置是否正确,确保测试用例的继承结构符合HarmonyOS测试框架规范。确认测试脚本中是否正确定义了测试方法,并遵循了测试执行流程。

根据你的描述,问题核心在于测试套脚本继承了 testcase 类,导致测试框架将其识别为一个独立的测试用例,而非一个用于组织和管理其他用例的“套件”或“容器”。

在HarmonyOS Next的UI自动化测试框架(Hypium)中,testcase 类是用于定义单个测试用例的基类。当你的测试套脚本(例如 UserLoginTestSuite)继承自 testcase 时,框架会将其视为一个可执行的测试用例。因此,在执行测试套时,框架只会运行这个“套件用例”本身(即 onStart 方法),而不会自动去遍历和执行你通过 addTest 方法添加进去的其他子用例(TC_002到TC_005)。

解决方案:

你需要让测试套脚本继承正确的基类。对于测试套(Test Suite),应该继承 TestSuite 类,而不是 testcase 类。

  1. 修改继承关系: 将你的 UserLoginTestSuite 类的父类从 testcase 改为 TestSuite

    // 修改前
    export default class UserLoginTestSuite extends testcase {
        // ...
    }
    
    // 修改后
    import { TestSuite } from '@ohos/hypium'; // 确保导入TestSuite
    export default class UserLoginTestSuite extends TestSuite {
        // ...
    }
    
  2. 调整结构:TestSuite 的子类中,通常是在构造函数或一个特定的初始化方法(如 onPrepare)中,通过 this.addTest() 来添加子用例。onStart 方法通常用于测试套级别的启动逻辑,但框架会自动调度其包含的子用例执行。

修改后的关键点:

  • TestSuite 类专门用于聚合多个 testcase
  • 框架会识别 TestSuite 类型,并执行其内部通过 addTest 注册的所有子用例。
  • 将环境清理(清除后台进程)的逻辑可以放在测试套的 onStart 方法中,它会在该测试套下所有子用例开始执行前运行一次。这与你的预期“每个case运行前”略有不同,是测试套级别的Setup。如果需要在每个用例前后都执行,应考虑使用 testcase 自身的 onStartonEnd 方法,或者使用 @Setup@TearDown 装饰器。

通过将继承关系从 testcase 更正为 TestSuite,你的测试套就能正确识别并依次运行 TC_002 到 TC_005 这些子用例了。

回到顶部