本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
将 Appium 测试与 Device Farm 集成
按照以下说明将 Appium 测试与 Dev AWS ice Farm 集成。有关在 Device Farm 中使用 Appium 测试的更多信息,请参阅。Appium 测试和 AWS Device Farm
配置您的 Appium 测试程序包
使用下面的说明来配置您的测试程序包。
- Java (JUnit)
-
-
修改
pom.xml
以将打包设置为JAR文件:<groupId>com.acme</groupId> <artifactId>acme-myApp-appium</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging>
-
修改
pom.xml
maven-jar-plugin
以用于将测试构建到JAR文件中。以下插件将你的测试源代码(
src/test
目录中的任何内容)生成到一个JAR文件中:<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>2.6</version> <executions> <execution> <goals> <goal>test-jar</goal> </goals> </execution> </executions> </plugin>
-
修改
pom.xml
maven-dependency-plugin
以用于将依赖关系构建为JAR文件。以下插件会将您的依赖项复制到
dependency-jars
目录:<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <version>2.10</version> <executions> <execution> <id>copy-dependencies</id> <phase>package</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <outputDirectory>${project.build.directory}/dependency-jars/</outputDirectory> </configuration> </execution> </executions> </plugin>
-
将以下XML程序集保存到
src/main/assembly/zip.xml
。以下XML是一个程序集定义,配置后,它会指示 Maven 生成一个.zip 文件,该文件包含生成输出目录的根目录和该目录中的所有内容:
dependency-jars
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd"> <id>zip</id> <formats> <format>zip</format> </formats> <includeBaseDirectory>false</includeBaseDirectory> <fileSets> <fileSet> <directory>${project.build.directory}</directory> <outputDirectory>./</outputDirectory> <includes> <include>*.jar</include> </includes> </fileSet> <fileSet> <directory>${project.build.directory}</directory> <outputDirectory>./</outputDirectory> <includes> <include>/dependency-jars/</include> </includes> </fileSet> </fileSets> </assembly>
-
修改
pom.xml
以使用maven-assembly-plugin
将测试和所有依赖项打包到一个 .zip 文件。每当 mvn package 运行时,以下插件便使用前面的组件在构建输出目录中创建一个名为
zip-with-dependencies
的 .zip 文件:<plugin> <artifactId>maven-assembly-plugin</artifactId> <version>2.5.4</version> <executions> <execution> <phase>package</phase> <goals> <goal>single</goal> </goals> <configuration> <finalName>zip-with-dependencies</finalName> <appendAssemblyId>false</appendAssemblyId> <descriptors> <descriptor>src/main/assembly/zip.xml</descriptor> </descriptors> </configuration> </execution> </executions> </plugin>
注意
如果您收到表明 1.3 不支持注释的错误消息,请将以下内容添加到
pom.xml
:<plugin> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin>
-
- Java (TestNG)
-
-
修改
pom.xml
以将打包设置为JAR文件:<groupId>com.acme</groupId> <artifactId>acme-myApp-appium</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging>
-
修改
pom.xml
maven-jar-plugin
以用于将测试构建到JAR文件中。以下插件将你的测试源代码(
src/test
目录中的任何内容)生成到一个JAR文件中:<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>2.6</version> <executions> <execution> <goals> <goal>test-jar</goal> </goals> </execution> </executions> </plugin>
-
修改
pom.xml
maven-dependency-plugin
以用于将依赖关系构建为JAR文件。以下插件会将您的依赖项复制到
dependency-jars
目录:<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <version>2.10</version> <executions> <execution> <id>copy-dependencies</id> <phase>package</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <outputDirectory>${project.build.directory}/dependency-jars/</outputDirectory> </configuration> </execution> </executions> </plugin>
-
将以下XML程序集保存到
src/main/assembly/zip.xml
。以下XML是一个程序集定义,配置后,它会指示 Maven 生成一个.zip 文件,该文件包含生成输出目录的根目录和该目录中的所有内容:
dependency-jars
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd"> <id>zip</id> <formats> <format>zip</format> </formats> <includeBaseDirectory>false</includeBaseDirectory> <fileSets> <fileSet> <directory>${project.build.directory}</directory> <outputDirectory>./</outputDirectory> <includes> <include>*.jar</include> </includes> </fileSet> <fileSet> <directory>${project.build.directory}</directory> <outputDirectory>./</outputDirectory> <includes> <include>/dependency-jars/</include> </includes> </fileSet> </fileSets> </assembly>
-
修改
pom.xml
以使用maven-assembly-plugin
将测试和所有依赖项打包到一个 .zip 文件。每当 mvn package 运行时,以下插件便使用前面的组件在构建输出目录中创建一个名为
zip-with-dependencies
的 .zip 文件:<plugin> <artifactId>maven-assembly-plugin</artifactId> <version>2.5.4</version> <executions> <execution> <phase>package</phase> <goals> <goal>single</goal> </goals> <configuration> <finalName>zip-with-dependencies</finalName> <appendAssemblyId>false</appendAssemblyId> <descriptors> <descriptor>src/main/assembly/zip.xml</descriptor> </descriptors> </configuration> </execution> </executions> </plugin>
注意
如果您收到表明 1.3 不支持注释的错误消息,请将以下内容添加到
pom.xml
:<plugin> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin>
-
- Node.JS
-
要打包 Appium Node.js 测试并将其上传到 Device Farm,您必须在本地计算机上安装以下内容:
-
在开发和打包测试时使用此工具,以便测试程序包中不包含不必要的依赖项。
-
Node.js
-
npm-bundle(全局安装)
-
验证 nvm 是否存在
command -v nvm
您应在输出中看到
nvm
。有关更多信息,请参阅 nvm
on。 GitHub -
运行此命令以安装 Node.js:
nvm install node
您可以指定 Node.js 的特定版本:
nvm install 11.4.0
-
验证是否正在使用正确版本的 Node:
node -v
-
全局安装 npm-bundle:
npm install -g npm-bundle
-
- Python
-
-
我们强烈建议您设置 Python virtualenv
用于开发和打包测试,以便不必要的依赖项不包含在您的应用程序包中。 $
virtualenv workspace$
cd workspace$
source bin/activate提示
-
请勿使用
--system-site-packages
选项创建 Python virtualenv,因为它会从全局 site-packages 目录中继承程序包。这可能导致您将测试不需要的依赖项包含在您的虚拟环境中。 -
您还应验证您的测试不使用依赖本机库的依赖项,因为这些本机库可能不位于运行这些测试的实例上。
-
-
在您的虚拟环境中安装 py.test。
$
pip install pytest -
在您的虚拟环境中安装 Appium Python 客户端。
$
pip install Appium-Python-Client -
除非您在自定义模式下指定其他路径,否则 Device Farm 会认为您的测试存储在
tests/
中。您可以使用find
显示文件夹中的所有文件:$
find tests/确认这些文件包含您要在 Device Farm 上运行的测试套件
tests/ tests/
my-first-tests.py
tests/my-second-tests/py
-
从虚拟环境工作空间文件夹运行此命令,以显示测试列表而不运行它们。
$
py.test --collect-only tests/确认输出显示您要在 Device Farm 上运行的测试。
-
清除 tests/ 文件夹下的所有缓存文件:
$
find . -name '__pycache__' -type d -exec rm -r {} +$
find . -name '*.pyc' -exec rm -f {} +$
find . -name '*.pyo' -exec rm -f {} +$
find . -name '*~' -exec rm -f {} + -
在您的工作空间中运行以下命令以生成 requirements.txt 文件:
$
pip freeze > requirements.txt
-
- Ruby
-
要打包 Appium Ruby 测试并将其上传到 Device Farm,您必须在本地计算机上安装以下内容:
-
在开发和打包测试时使用此命令行工具,以便测试程序包中不包含不必要的依赖项。
-
Ruby
-
Bundler(此 gem 通常与 Ruby 一起安装。)
-
安装所需的密钥RVM、和 Ruby。有关说明,请参阅在RVMRVM网站上安装
。 安装完成后,通过注销然后再次登录来重新加载终端。
注意
RVM仅作为 bash shell 的函数加载。
-
验证 rvm 是否已正确安装。
command -v rvm
您应在输出中看到
rvm
。 -
如果你想安装特定版本的 Ruby,例如
2.5.3
,运行以下命令:rvm install ruby 2.5.3 --autolibs=0
验证您是否在使用所请求的 Ruby 版本:
ruby -v
-
配置捆绑器以编译适用于所需测试平台的软件包:
bundle config specific_platform true
-
更新您的 .lock 文件以添加运行测试所需的平台。
-
如果您正在编译要在 Android 设备上运行的测试,请运行以下命令将 Gemfile 配置为使用 Android 测试主机的依赖项:
bundle lock --add-platform x86_64-linux
-
如果您正在编译要在 iOS 设备上运行的测试,请运行以下命令将 Gemfile 配置为使用 iOS 测试主机的依赖项:
bundle lock --add-platform x86_64-darwin
-
-
默认情况下,通常会安装 bundler gem。如果未安装,请安装它:
gem install bundler -v 2.3.26
-
创建压缩程序包文件
警告
在 Device Farm 中,压缩后的测试包中文件的文件夹结构很重要,一些存档工具会隐式更改ZIP文件结构。我们建议您使用下面指定的命令行实用程序,而不是使用本地桌面文件管理器中内置的归档实用程序(例如 Finder 或 Windows Explorer)。
现在,将测试打包以用于 Device Farm。
- Java (JUnit)
-
构建和打包测试:
$ mvn clean package -DskipTests=true
最后将创建文件
zip-with-dependencies.zip
。这是您的测试程序包。 - Java (TestNG)
-
构建和打包测试:
$ mvn clean package -DskipTests=true
最后将创建文件
zip-with-dependencies.zip
。这是您的测试程序包。 - Node.JS
-
-
查看您的项目。
确保您位于项目的根目录中。您可以在根目录中看到
package.json
。 -
运行此命令来安装您的本地依赖项。
npm install
此命令还会在当前目录中创建一个
node_modules
文件夹。注意
此时,您应该能够在本地运行您的测试。
-
运行此命令以将当前文件夹中的文件打包为 *.tgz 文件。使用
package.json
文件中的name
属性命名此文件。npm-bundle
此 tarball (.tgz) 文件包含您的所有代码和依赖项。
-
运行此命令将上一步中生成的 tarball(*.tgz 文件)捆绑到单个压缩存档中:
zip -r
MyTests.zip
*.tgz这是您在以下过程中上传到 Device Farm 的
MyTests.zip
文件。
-
- Python
-
- Python 2
-
使用 pip 生成所需的 Python 程序包的存档(称为“wheelhouse”):
$
pip wheel --wheel-dir wheelhouse -r requirements.txt将 wheelhouse、测试和 pip 要求打包到 zip 存档中,以用于 Device Farm:
$
zip -rtest_bundle.zip
tests/ wheelhouse/ requirements.txt - Python 3
-
将测试和 pip 要求打包到 zip 文件中:
$
zip -rtest_bundle.zip
tests/ requirements.txt
- Ruby
-
-
运行此命令以创建虚拟 Ruby 环境:
# myGemset is the name of your virtual Ruby environment rvm gemset create
myGemset
-
运行此命令以使用您刚刚创建的环境:
rvm gemset use
myGemset
-
请查看您的源代码。
确保您位于项目的根目录中。您可以在根目录中看到
Gemfile
。 -
运行此命令以从
Gemfile
安装您的本地依赖项和所有 Gem。bundle install
注意
此时,您应该能够在本地运行您的测试。使用此命令在本地运行测试:
bundle exec $test_command
-
将您的 Gem 打包到
vendor/cache
文件夹中。# This will copy all the .gem files needed to run your tests into the vendor/cache directory bundle package --all-platforms
-
运行以下命令将源代码以及所有依赖项捆绑到单个压缩存档中:
zip -r MyTests.zip Gemfile vendor/ $(any other source code directory files)
这是您在以下过程中上传到 Device Farm 的
MyTests.zip
文件。
-
将您的测试程序包上传到 Device Farm
您可以使用 Device Farm 控制台上传测试。
登录 DeviceFarm 控制台,网址为 https://console.aws.amazon.com/devicef
arm。 -
在 Device Farm 导航面板上,选择移动设备测试,然后选择项目。
-
如果您是新用户,请选择新建项目,输入项目的名称,然后选择提交。
如果您已有项目,可以选择该项目以将您的测试上传到该项目。
-
打开您的项目,然后选择 Create a new run (创建新运行)。
-
- 适用于本机 Android 和 iOS 测试
-
在选择应用程序页面上,选择移动应用程序,然后选择选择文件以上传应用程序的可分发程序包。
注意
该文件必须是 Android
.apk
或 iOS.ipa
。iOS 应用程序必须是针对真实设备而不是模拟器构建的。 - 适用于移动 Web 应用程序测试
-
在选择应用程序 页面上,选择 Web 应用程序。
-
为您的测试指定一个适当的名称。这可能包含空格或标点符号的任意组合。
-
选择下一步。
-
在 “配置” 页面的 “设置测试框架” 部分,选择 Appium
language
,然后选择 “文件”。 -
浏览到并选择包含您的测试的 .zip 文件。该 .zip 文件必须遵循配置您的 Appium 测试程序包中所述的格式。
-
选择在自定义环境中运行测试。使用执行环境可以完全控制测试设备的安装、拆卸和调用,还可以选择运行时系统和 Appium 服务器的特定版本。您可以通过测试规范文件来配置您的自定义环境。有关更多信息,请参阅在 Dev AWSice Farm 中使用自定义测试环境。
-
选择下一步,然后按照说明来选择设备并开始运行。有关更多信息,请参阅 在 Device Farm 中创建测试运行。
注意
Device Farm 不会修改 Appium 测试。
拍摄测试的屏幕截图(可选)
您可以拍摄屏幕截图作为测试的一部分。
Device Farm 会将 DEVICEFARM_SCREENSHOT_PATH
属性设置为本地文件系统中的一个完全限定路径(这是 Device Farm 希望 Appium 屏幕截图保存到的路径)。存储屏幕截图的特定于测试的目录在运行时定义。系统会自动将这些屏幕截图提取到您的 Device Farm 报告中。要查看屏幕截图,请在 Device Farm 控制台中选择 Screenshots (屏幕截图) 部分。
有关在 Appium 测试中截取屏幕截图的更多信息,请参阅 App API ium 文档中的截屏