React-Native移动应用自动化测试框架Detox简介

2023-10-12 23:30

本文主要是介绍React-Native移动应用自动化测试框架Detox简介,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

经过开发的鼎力相助,终于把RN的自动化测试框架研究通过了,目前环境已搭建并结合APP运行第一个Demo成功了。

1框架介绍(Detox)

https://github.com/wix/detox

它是为移动端APP打造的灰盒端到端自动化测试框架。

可用于React-Native开发的APP,使用js测试框架test或mocha来执行相应的测试脚本。通过对RN程序包中package.json增加Detox相关配置,并在RN程序包中增加测试案例文件夹e2e(在其中增加测试案例)实现测试用例的编写和执行。

 

 

2环境搭建 (以下以在ios中运行自动化测试案例为例)

2.1环境准备:

Mac with macOS (macOS El Capitan 10.11以上)

Xcode 8.3+ with Xcode command line tools

一个需要被测试正在使用的 React Native app

 

2.2 安装步骤:

2.2.1 安装依赖

2.2.1.1 安装最新版本的homebrew

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

 

2.2.1.2 安装Node.js

 

brew update && brew install node

2.2.1.3 安装applesimutils

brew tap wix/brew

 

brew install applesimutils

 

使用applesimutils来完成调用Xcode中运行的IOS模拟器,所以前提是必须先在Xcode中将模拟器调起。

 

2.2.1.4 安装detox-cli

 

npm install -g detox-cli

 

2.2.1.5 安装 react-native-cli

npm install -g react-native-cli

2.2.1.6 安装

 

2.2.2 安装用例运行框架(Mocha或Jest,都是js测试框架,目前使用的是前者)

 

2.2.2.1 安装jest工具(以下演示以jest为例)

npm install jest --save-dev

 

2.2.2.2 安装mocha工具

 

npm install mocha --save-dev

 

 

2.2.3 安装Detox到项目

若你的项目是RN项目,则可以使用如下口令完成Detox安装:

 

npm install detox --save-dev

 

若为原生安卓或IOS的项目,则需要在项目目录下的packages.json更新如下内容换句话说也支持安卓和IOS项目的自动化测试

{

  "name": "<your_project_name>",

  "version": "0.0.1"

}

然后再安装Detox

npm install detox --save-dev

 

 

3 更新配置文件package.json

需要更新项目根目录下的package.json,把如下代码插入其中。

"detox": {

  "configurations": {

    "ios.sim.debug": {

      "binaryPath": "ios/build/Build/Products/Debug-iphonesimulator/example.app",

      "build": "xcodebuild -project ios/example.xcodeproj -scheme example -configuration Debug -sdk iphonesimulator -derivedDataPath ios/build",

      "type": "ios.simulator",

      "name": "iPhone 7"

    }

  }

}

在如上代码中,得把example使用实际的项目名称(这里是ClaimPlatform_RN)替代,见下图。

,在binaryPath中

example.app也应被ClaimPlatform_RN.app替代。在bulid这项中example.xcodeproj也被做相应的替代,变成ClaimPlatform_RN.xcodeproj,-scheme example变成 -scheme ClaimPlatform_RN

如果IOS的app咋workspace文件夹中,则得使用 use -workspace ios/example.xcworkspace 来代替项目,变成 use -workspace ios/laimPlatform_RN.xcworkspace instead of -project

确保配置文件中的模拟器是已经被安装并处于可用状态(如以上配置中的iphone7 是否可以被Xcode调起)。亦可通过xcrun simctl口令检查可使用的模拟器是否包含配置中的模拟器。

附修改后package.json的detox配置(只包含了IOS的,也可补充Android的):

"detox": {

    "test-runner": "jest",

    "specs": "e2e",

    "configurations": {

      "ios.sim.release": {

      "binaryPath":"ios/build/Build/Products/Debug-iphonesimulator/ClaimPlatform_RN.app",

        "build": "export RCT_NO_LAUNCH_PACKAGER=true && xcodebuild -workspace ios/ClaimPlatform_RN.xcworkspace -scheme ClaimPlatform_RN -configuration Release -sdk iphonesimulator -derivedDataPath ios/build -quiet",

        "type": "ios.simulator",

        "name": "iPhone 7"

      },

      "ios.sim.debug": {

        "binaryPath":"ios/build/Build/Products/Debug-iphonesimulator/ClaimPlatform_RN.app",

        "build": "xcodebuild -workspace ios/ClaimPlatform_RN.xcworkspace -scheme ClaimPlatform_RN -configuration Debug -sdk iphonesimulator -derivedDataPath ios/build",

        "type": "ios.simulator",

        "name": "iPhone 7"

      }

    }

  },

 

Plus:在MAC环境中执行用例前,必须先通过Xcode调起该模拟器

 

4 编写用例

4.1 构建用例文件夹

若选中mocha做为测试框架,则需要输入如下口令即可在项目当前根目录下

自动生成e2e文件夹,并完成对mocha运行的简单配置。

detox init -r mocha

同理,选用jest,则执行如下口令:

detox init -r jest

 

4.2 编写用例

     开始编写第一个演示Demo,这里以RN的 APP首页上的输入手机号码定位为例子。4.2.1 前期准备:需要在前端代码中给该输入文本框元素增加一个全局定位属性testID,见下

 

4.2.2 编写用例

以打开IOS的APP找到首页上的手机号输入框为例。describe相当于testsuit,后面跟的是testsuit名称(建议与项目名称一致);it相当于testcase,后面跟的是testcase名称。具体用例见下图。

 

 

 

构建APP并执行用例

5.1 构建APP

detox build --configuration ios.sim.debug (debug模式)

detox build --configuration ios.sim.release (release模式)

5.2 执行用例

detox test --configuration ios.sim.debug (debug模式)

detox test --configuration ios.sim.release (release模式)

这篇关于React-Native移动应用自动化测试框架Detox简介的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/199196

相关文章

CSS中的Static、Relative、Absolute、Fixed、Sticky的应用与详细对比

《CSS中的Static、Relative、Absolute、Fixed、Sticky的应用与详细对比》CSS中的position属性用于控制元素的定位方式,不同的定位方式会影响元素在页面中的布... css 中的 position 属性用于控制元素的定位方式,不同的定位方式会影响元素在页面中的布局和层叠关

SpringBoot3应用中集成和使用Spring Retry的实践记录

《SpringBoot3应用中集成和使用SpringRetry的实践记录》SpringRetry为SpringBoot3提供重试机制,支持注解和编程式两种方式,可配置重试策略与监听器,适用于临时性故... 目录1. 简介2. 环境准备3. 使用方式3.1 注解方式 基础使用自定义重试策略失败恢复机制注意事项

详解如何使用Python构建从数据到文档的自动化工作流

《详解如何使用Python构建从数据到文档的自动化工作流》这篇文章将通过真实工作场景拆解,为大家展示如何用Python构建自动化工作流,让工具代替人力完成这些数字苦力活,感兴趣的小伙伴可以跟随小编一起... 目录一、Excel处理:从数据搬运工到智能分析师二、PDF处理:文档工厂的智能生产线三、邮件自动化:

Python实现自动化Word文档样式复制与内容生成

《Python实现自动化Word文档样式复制与内容生成》在办公自动化领域,高效处理Word文档的样式和内容复制是一个常见需求,本文将展示如何利用Python的python-docx库实现... 目录一、为什么需要自动化 Word 文档处理二、核心功能实现:样式与表格的深度复制1. 表格复制(含样式与内容)2

Python使用Tkinter打造一个完整的桌面应用

《Python使用Tkinter打造一个完整的桌面应用》在Python生态中,Tkinter就像一把瑞士军刀,它没有花哨的特效,却能快速搭建出实用的图形界面,作为Python自带的标准库,无需安装即可... 目录一、界面搭建:像搭积木一样组合控件二、菜单系统:给应用装上“控制中枢”三、事件驱动:让界面“活”

pytest+allure环境搭建+自动化实践过程

《pytest+allure环境搭建+自动化实践过程》:本文主要介绍pytest+allure环境搭建+自动化实践过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、pytest下载安装1.1、安装pytest1.2、检测是否安装成功二、allure下载安装2.

如何确定哪些软件是Mac系统自带的? Mac系统内置应用查看技巧

《如何确定哪些软件是Mac系统自带的?Mac系统内置应用查看技巧》如何确定哪些软件是Mac系统自带的?mac系统中有很多自带的应用,想要看看哪些是系统自带,该怎么查看呢?下面我们就来看看Mac系统内... 在MAC电脑上,可以使用以下方法来确定哪些软件是系统自带的:1.应用程序文件夹打开应用程序文件夹

如何基于Python开发一个微信自动化工具

《如何基于Python开发一个微信自动化工具》在当今数字化办公场景中,自动化工具已成为提升工作效率的利器,本文将深入剖析一个基于Python的微信自动化工具开发全过程,有需要的小伙伴可以了解下... 目录概述功能全景1. 核心功能模块2. 特色功能效果展示1. 主界面概览2. 定时任务配置3. 操作日志演示

python多线程并发测试过程

《python多线程并发测试过程》:本文主要介绍python多线程并发测试过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、并发与并行?二、同步与异步的概念?三、线程与进程的区别?需求1:多线程执行不同任务需求2:多线程执行相同任务总结一、并发与并行?1、

Python Flask 库及应用场景

《PythonFlask库及应用场景》Flask是Python生态中​轻量级且高度灵活的Web开发框架,基于WerkzeugWSGI工具库和Jinja2模板引擎构建,下面给大家介绍PythonFl... 目录一、Flask 库简介二、核心组件与架构三、常用函数与核心操作 ​1. 基础应用搭建​2. 路由与参