成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

OpenHarmony UiTest測試用例開發實踐

系統 OpenHarmony
本文只是對UiTest接口做一個簡單的實踐,旨在讓開發者了解UiTest測試用例的開發流程以及部分接口介紹。

想了解更多關于開源的內容,請訪問:

51CTO 開源基礎軟件社區

https://ost.51cto.com

前言

這篇文章主要對UiTest測試用例的開發做一個簡單的開發實踐。

概述

UiTest提供模擬UI操作的能力,供開發者在測試場景使用,主要支持如點擊、雙擊、長按、滑動等UI操作能力。

UiTest主要包含以下幾個關鍵、常用的類:

  • On:提供控件特征描述能力,用于控件篩選匹配查找。
  • Component:代表UI界面上的指定控件,提供控件屬性獲取,控件點擊,滑動查找,文本注入等能力。
  • Driver:入口類,提供控件匹配/查找,按鍵注入,坐標點擊/滑動,截圖等能力。
  • UiWindow:入口類,提供窗口屬性獲取,窗口拖動、調整窗口大小等能力。

開發步驟

打開應用

了解OpenHarmony應用工程結構的同學應該知道,每個模塊最終都會編譯成一個hap,例如我們最熟悉的entry模塊,而ohosTest模塊最終也會編譯成一個hap,并安裝在桌面上。

【小源筆記】第十期 | OpenHarmony UiTest測試用例開發實踐-開源基礎軟件社區

讀過上篇文章或者了解OpenHarmony應用開發的同學也知道,這個hap默認打開的是TestAbility中指定的頁面,而開發者如果想測試的是其他hap(例如筆者這里測試的是entry模塊編譯的hap),首先需要使用startAbility的方式進行拉起。

it(BUNDLE + 'StartAbility_001', 0, async function (done) {
  console.info(TAG, BUNDLE + 'StartAbility_001 begin')
  try {
    await abilityDelegator.startAbility({
      bundleName: 'com.example.myapplication',
      abilityName: 'EntryAbility'
    })
    done()
  } catch (exception) {
    console.info(TAG, `StartAbility_001 exception = ${JSON.stringify(exception)}`)
    expect().assertFail()
  }
  console.info(TAG, BUNDLE + 'StartAbility_001 end')
})

創建Driver對象

Driver類作為UiTest測試框架的總入口,在使用控件匹配/查找,按鍵注入,坐標點擊/滑動,截圖等能力之前,需要使用Driver.create()方法創建一個Driver對象。

let driver = Driver.create()

控件匹配、操作

On類提供了豐富的控件特征描述,可以指定某個控件的id、類型、文本內容等條件進行匹配,例如筆者這里分別給TextInput和Button組件設置了id,然后就可以使用ON.id()進行條件匹配。

【小源筆記】第十期 | OpenHarmony UiTest測試用例開發實踐-開源基礎軟件社區

也可以同時指定目標控制的id和type,例如:

ON.id('button').type('Button')

在查找目標控件之前,可以使用斷言API斷言當前界面是否存在滿足給出的目標屬性的控件,如不滿足則會報錯退出。

await driver.assertComponentExist(ON.id('textInput'))

在使用On類指定條件后,可以使用driver.findComponent()方法進行控件匹配,匹配成功后返回符合條件的Component對象,然后就可以使用Component類提供的方法進行點擊、滑動、注入文本等操作。

let textInput = await driver.findComponent(ON.id('textInput'))
await textInput.inputText('OpenHarmony');

運行效果

【小源筆記】第十期 | OpenHarmony UiTest測試用例開發實踐-開源基礎軟件社區

完整代碼

import { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from '@ohos/hypium'
import AbilityDelegatorRegistry from '@ohos.app.ability.abilityDelegatorRegistry'
import { Driver, ON } from '@ohos.UiTest'

const TAG = '[Sample_MyApplication]'
const BUNDLE = 'myApplication_'

const DELAY_TIME = 1000;

export default function abilityTest() {
  let driver = Driver.create()
  let abilityDelegator = AbilityDelegatorRegistry.getAbilityDelegator()
  describe('ActsAbilityTest', function () {
    /**
     * 打開應用
     */
    it(BUNDLE + 'StartAbility_001', 0, async function (done) {
      console.info(TAG, BUNDLE + 'StartAbility_001 begin')
      try {
        await abilityDelegator.startAbility({
          bundleName: 'com.example.myapplication',
          abilityName: 'EntryAbility'
        })
        done()
      } catch (exception) {
        console.info(TAG, `StartAbility_001 exception = ${JSON.stringify(exception)}`)
        expect().assertFail()
      }
      console.info(TAG, BUNDLE + 'StartAbility_001 end')
    })

    it(BUNDLE + 'function_001', 0, async function () {
      console.info(TAG, BUNDLE + 'function_001 begin')
      await driver.delayMs(DELAY_TIME)
      // 向文本框控件中輸入文本
      await driver.assertComponentExist(ON.id('textInput'))
      let textInput = await driver.findComponent(ON.id('textInput'))
      await textInput.inputText('OpenHarmony');
      await driver.delayMs(DELAY_TIME)
      // 點擊按鈕
      await driver.assertComponentExist(ON.id('button'))
      let btn = await driver.findComponent(ON.id('button'))
      await btn.click();
      await driver.delayMs(DELAY_TIME)
      // 清空文本框控件的文本信息
      await textInput.clearText();
      console.info(TAG, BUNDLE + 'function_001 end')
    })
  })
}

常見問題

1、失敗日志有“execute timeout 15000ms”錯誤信息

問題分析

默認測試執行時長為15000ms,當測試用例執行超時就會自動退出并報該錯誤。

解決方法

在如下位置修改執行超時時長。

【小源筆記】第十期 | OpenHarmony UiTest測試用例開發實踐-開源基礎軟件社區

2、失敗日志有“uitest-api dose not allow calling concurrently”錯誤信息

問題分析

可能為報錯位置前面調用的異步接口沒有使用await調用,或者并行執行多個測試用例,導致前面的API沒有執行完,就調用了新的API。

解決方法

1.檢查用例實現,異步接口增加await調用。

2.避免多進程執行UI的測試用例。

結語

本文只是對UiTest接口做一個簡單的實踐,旨在讓開發者了解UiTest測試用例的開發流程以及部分接口介紹。UiTest除此之外還提供更加強大、更加復雜的能力,大家可以自行探索。

想了解更多關于開源的內容,請訪問:

51CTO 開源基礎軟件社區

https://ost.51cto.com

責任編輯:jianghua 來源: 51CTO 開源基礎軟件社區
相關推薦

2021-12-22 10:19:47

鴻蒙HarmonyOS應用

2021-03-04 15:43:29

前端測試工具開發

2011-05-16 15:18:18

測試用例

2011-06-08 17:23:12

測試用例

2022-05-10 14:54:13

驗收標準測試用例

2011-05-16 15:09:20

測試用例

2011-04-18 10:46:39

接口測試

2022-01-19 17:48:57

測試用例開發

2020-08-25 08:03:59

測試Sharness結構

2011-05-16 14:54:12

測試用例

2011-07-04 18:06:52

測試用例

2011-12-23 17:03:29

性能測試用例設計

2022-06-13 09:00:00

Selenium測試Web

2011-09-01 10:05:24

PhoneGap應用程序測試

2025-05-27 01:45:00

DeepSeekPython測試

2011-06-03 16:58:03

測試用例

2011-11-02 09:54:37

測試

2024-09-29 15:26:53

MySQLPython

2021-11-07 14:33:48

算法Pairwise功能

2023-09-04 17:48:06

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产日韩欧美电影 | www4虎 | 四虎影 | 亚洲国产精品一区 | 国产剧情久久 | 久久国产精品一区 | 久久久毛片 | 精品国产一区二区三区久久 | 精品一区二区三区av | 国产精品久久久久久久久久久久午夜片 | 成人在线精品视频 | 国产精品久久久久久久7电影 | 四虎在线观看 | 国产精品一区二区三区在线 | 久久精品91久久久久久再现 | www久久久| 免费久久99精品国产婷婷六月 | 亚洲毛片在线观看 | 久久6视频 | 日本久久视频 | 少妇一区二区三区 | 免费一级淫片aaa片毛片a级 | 综合久久99 | 一区二区三区视频免费观看 | 黄色片免费在线观看 | 久久精品日产第一区二区三区 | 亚洲精品视频导航 | 久久av网 | 国产在线一区观看 | 成人国产a | 一区二区三区高清 | 美女黄网| 爱草在线| 国产在线观看 | 日韩高清国产一区在线 | 青娱乐av | 亚洲一区二区电影在线观看 | 久久精品久久综合 | 天天av网 | 91精品国产综合久久久动漫日韩 | 91精品国产欧美一区二区成人 |