
# 测试自动化工厂Appium+Android Studio打开系统时间案例
#### 背景介绍
自动化测试工厂通过多引擎测试执行机灵活接入以及丰富的执行策略，实现测试自动化工厂7\*24小时大规模并行执行，同时支持通过插件接入第三方测试执行机，帮助用户扩展测试场景。
本章节以"Appium + Android Studio"场景下，打开系统时间测试项目为示例，展示测试自动化工厂的接入使用方法。
#### 适用场景
- 企业有自建的自动化测试执行机环境，能够将自动化执行机纳入软件开发平台测试计划服务统一管理。
- 希望将自研测试工具接入华为云生态，向其客户提供自动化测试执行机，提供更丰富的测试场景。
 
#### 前提条件
1. 已有可用项目（本章节以Scrum项目为例），参考[新建项目](https://support.huaweicloud.com/usermanual-devcloud/codearts_01_0027.html)。
2. 测试计划中已勾选"功能自动化"执行方式。
3. 用户已购买[测试自动化工厂增值特性](https://support.huaweicloud.com/price-testman/cloudtest_bill_2004.html#section1)。
4. 本实例的功能自动化测试用例需要python脚本，需要[安装python环境](https://www.python.org/downloads/windows/)。
5. 已完成[配置VPC终端节点 VPCEP](https://support.huaweicloud.com/usermanual-vpcep/zh-cn_topic_0131645189.html)。
 
#### 执行器环境准备
1. 用户本地已配置自定义执行器（例如一台Windows机器），可参考[Appium官网](https://appium.io/docs/en/latest/quickstart/install/)，安装Appium环境。
2. 准备Android Studio环境，可参考[官网](https://developer.android.com/studio?hl=zh-cn)下载安装包，并准备好Android SDK。
3. 启动Appium，以及启动本地Android项目。 ![](https://support.huaweicloud.com/bestpractice-testman/zh-cn_image_0000002518269818.png "点击放大")
   
   
 
#### 本地自定义执行器接入CodeArts TestPlan服务测试自动化工厂
1. 登录华为云码道服务首页，搜索目标项目并单击项目名称（以Scrum项目为例），进入项目。
2. 单击左侧导航栏"测试 \> 测试执行"。
3. 选择"功能自动化^工厂^"页签，单击"执行器管理 \> 执行器接入"。
4. 在"通用测试框架场景"下，选择"Appium"框架。
5. 完成[配置VPC终端节点 VPCEP](https://support.huaweicloud.com/usermanual-vpcep/zh-cn_topic_0131645189.html)，输入得到的服务地址。获取方法可参考[接入执行器前准备](https://support.huaweicloud.com/usermanual-testman/cloudtest_01_0237.html#section1)。
6. 单击"生成命令"。
7. 请以管理员账户登录待安装主机，执行复制命令（windows通过git bash窗口）。当显示【"success"】时，表示安装成功。安装成功后，可在执行器列表中查看执行器状态。 
   ![](https://support.huaweicloud.com/bestpractice-testman/zh-cn_image_0000002549947337.png "点击放大")
   
   
8. 在本地打开"PROPERTIES"配置文件,配置对接代码托管仓库的用户名和密码，配置完成后可以实现访问代码仓库中的文件信息。 
   默认为当前登录的华为云账户、密码。
   ![](https://support.huaweicloud.com/bestpractice-testman/zh-cn_image_0000002525507862.png "点击放大")
   ![](https://support.huaweicloud.com/bestpractice-testman/public_sys-resources/note_3.0-zh-cn.png)
   如果密码中存在特殊字符，需要进行转义。例如：上图中"\\@"，针对@字符进行转义。
   
   
9. 在"PROPERTIES"配置文件中找到执行机类型字段（tep.type）,默认为python-pytest，用户可以自行修改。 
   ![](https://support.huaweicloud.com/bestpractice-testman/zh-cn_image_0000002556559575.png "点击放大")
   参考[添加执行平台用例字段信息](https://support.huaweicloud.com/usermanual-testman/cloudtest_01_0153.html)，将"python-pytest"添加到执行平台字段的选项中。
   
   
10. 保存配置文件后，重新执行平台和配置文件。 
    ![](https://support.huaweicloud.com/bestpractice-testman/zh-cn_image_0000002556559703.png "点击放大")
    
    
 
#### 在代码托管服务中托管功能自动化测试用例脚本
1. 单击左侧导航栏"代码 \> \> 代码托管"。
2. 单击"新建仓库"，选择"普通新建"，单击"下一步"。
3. 代码仓库名称输入"pythonTest"，单击"确定"。
4. 进入代码仓库详情页后，单击"新建 \> 新建文件 "。
5. 输入文件名"TestApp"及以下的python脚本。 
   ```
   import unittest
   from appium import webdriver
   from appium.options.android import UiAutomator2Options
   from appium.webdriver.common.appiumby import AppiumBy
    
   capabilities = dict(
       platformName='Android',
       automationName='uiautomator2',
       deviceName='emulator-5554',
       appPackage='com.android.settings',
       appActivity='.Settings',
       language='en',
       locale='US'
   )
    
   appium_server_url = '{url}'//用户本地appium服务的url
    
   class TestAppium(unittest.TestCase):
       def setUp(self) -> None:
           self.driver = webdriver.Remote(appium_server_url, options=UiAutomator2Options().load_capabilities(capabilities))
    
       def tearDown(self) -> None:
           if self.driver:
               self.driver.quit()
    
       def test_find_apps(self) -> None:
           el = self.driver.find_element(by=AppiumBy.XPATH, value='//*[@text="Apps"]')
           el.click()
           assert True
    
   if __name__ == '__main__':
       unittest.main()
   ```
   ![](https://support.huaweicloud.com/bestpractice-testman/zh-cn_image_0000002518451518.png "点击放大")
   
   
6. 配置完成后，单击"确定"。
 
#### 创建功能自动化测试用例
1. 单击左侧导航栏"测试 \> 测试用例"。
2. 选择"功能自动化"执行方式。
3. 单击"新建用例"。
4. 用例名称输入"APPium"。
5. 脚本路径输入已在代码托管创建文件的相对路径，本示例输入"./pythonTest/testApp"。
6. 单击"保存"。
 
#### 创建并执行功能自动化任务
1. 单击左侧导航栏"测试 \> 测试执行"。
2. 选择"功能自动化^工厂^"。
3. 单击"新建套件 \> 创建任务"。
4. 任务名称输入"APPium"。
5. 单击"添加用例"，在添加用例的弹框中勾选已创建的功能自动化测试用例（APPium）。 
   ![](https://support.huaweicloud.com/bestpractice-testman/zh-cn_image_0000002549939499.png "点击放大")
   
   
6. 选择已成功接入的自定义执行器，其他配置可保持默认。
7. 在页面下方的扩展字段里，选择"CodeArts Repo"，单击代码仓的下拉栏，选择已创建成功的代码仓"pythonTest"。
8. 单击"保存"，新建成功的功能自动化任务将显示在任务列表中。
9. 单击操作列中的![](https://support.huaweicloud.com/bestpractice-testman/zh-cn_image_0000002550060685.png)图标。
   
   ![](https://support.huaweicloud.com/bestpractice-testman/zh-cn_image_0000002549940525.png "点击放大")
   用户可在本地执行器上，系统时钟已经被打开。
   ![](https://support.huaweicloud.com/bestpractice-testman/zh-cn_image_0000002550060543.png "点击放大")
   
   
10. 在任务列表中，单击APPium任务名称，进入任务详细页，显示结果为成功。 
    ![](https://support.huaweicloud.com/bestpractice-testman/zh-cn_image_0000002549940641.png "点击放大")
    
    
 
