当前位置: 首页 > 知识库问答 >
问题:

如何在AWS设备农场中获得更细粒度的测试结果?[鸦片node.js]

公良渝
2023-03-14

我在AWS设备农场上运行Appiumnode.js测试。我想在设备农场中显示粒度测试结果,但是我总是得到一个包含所有测试的“测试套件”结果。因此,如果一个小测试失败,整个测试套件就会失败。我在设备农场文档中读到,在标准环境中会显示更细粒度的结果,但我不确定如何切换或使用标准环境。我认为它与YAML文件有关,因为在设备场用户界面上不再提供在标准或自定义环境之间进行选择的可能性。

这是我当前的YAML文件:

version: 0.1

# Phases are collection of commands that get executed on Device Farm.
phases:
  # The install phase includes commands that install dependencies that your tests use.
  # Default dependencies for testing frameworks supported on Device Farm are already installed.
  install:
    commands:
      # By default, Appium server version used is 1.7.2.
      # You can switch to an alternate supported version from 1.6.5, 1.7.1, 1.7.2, 1.8.0 , 1.8.1, 1.9.1 by using a command like "avm 1.7.1"
      # OR
      # To install a newer version of Appium use the following commands:
      - export APPIUM_VERSION=1.9.1
      - avm $APPIUM_VERSION
      - ln -s /usr/local/avm/versions/$APPIUM_VERSION/node_modules/.bin/appium  /usr/local/avm/versions/$APPIUM_VERSION/node_modules/appium/bin/appium.js

      # By default the node version installed is 11.4.0
      # you can switch to an alternate node version using below command.
      # - nvm install 10.13.0

      # Unpackage and install the node modules that you uploaded in the test phase.
      - echo "Navigate to test package directory"
      - cd $DEVICEFARM_TEST_PACKAGE_PATH
      - npm install *.tgz

  # The pre-test phase includes commands that setup your test environment.
  pre_test:
    commands:
      # We recommend starting appium server process in the background using the command below.
      # Appium server log will go to $DEVICEFARM_LOG_DIR directory.
      # The environment variables below will be auto-populated during run time.
      - echo "Start appium server"
      - >-
        appium --log-timestamp --device-name $DEVICEFARM_DEVICE_NAME
        --platform-name $DEVICEFARM_DEVICE_PLATFORM_NAME --app $DEVICEFARM_APP_PATH
        --automation-name UiAutomator2 --udid $DEVICEFARM_DEVICE_UDID
        --chromedriver-executable $DEVICEFARM_CHROMEDRIVER_EXECUTABLE  >> $DEVICEFARM_LOG_DIR/appiumlog.txt 2>&1 &

      - >-
        start_appium_timeout=0;
        while [ true ];
        do
            if [ $start_appium_timeout -gt 60 ];
            then
                echo "appium server never started in 60 seconds. Exiting";
                exit 1;
            fi;
            grep -i "Appium REST http interface listener started on 0.0.0.0:4723" $DEVICEFARM_LOG_DIR/appiumlog.txt >> /dev/null 2>&1;
            if [ $? -eq 0 ];
            then
                echo "Appium REST http interface listener started on 0.0.0.0:4723";
                break;
            else
                echo "Waiting for appium server to start. Sleeping for 1 second";
                sleep 1;
                start_appium_timeout=$((start_appium_timeout+1));
            fi;
        done; 

  # The test phase includes commands that run your test suite execution.
  test:
    commands:
      # Go into the root folder containing your source code and node_modules
      - echo "Navigate to test source code"
      # Change the directory to node_modules folder as it has your test code and the dependency node modules.
      - cd $DEVICEFARM_TEST_PACKAGE_PATH/node_modules/*

      - echo "Start Appium Node test"
      # Enter the command below to start the tests . The comamnd should be similar to what you use to run the tests locally.
      # For e.g. assuming you run your tests locally using command "node YOUR_TEST_FILENAME.js.", enter the same command below:
      - npm run test:android

  # The post test phase includes are commands that are run after your tests are executed.
  post_test:
    commands:

# The artifacts phase lets you specify the location where your tests logs, device logs will be stored.
# And also let you specify the location of your test logs and artifacts which you want to be collected by Device Farm.
# These logs and artifacts will be available through ListArtifacts API in Device Farm.
artifacts:
  # By default, Device Farm will collect your artifacts from following directories
  - $DEVICEFARM_LOG_DIR``` 

共有1个答案

漆雕洋
2023-03-14

AWS设备场的标准模式独立于YAML文件。当您通过控制台或通过ScheduleRun API通过CLI安排运行时,这是在“配置”步骤中配置的设置。目前,AWS设备场不支持标准模式下的Appium节点,这意味着您正在寻求的细粒度报告不可用。

如果您有进一步的问题,您可以前往AWS设备农场论坛,从他们的工程团队获得额外的帮助。

安迪

 类似资料:
  • 我试图将iOS XCTest设置为在AWS设备场上运行,但似乎无论我如何构建和上传它们,每次测试都会出错并失败。当我运行XCode时,它们会成功执行,但不会在AWS设备场上运行。 我甚至尝试了从非常简单的应用程序,没有任何api调用,但也失败了。 以下是AWS设备场界面中出现的错误。 你可以从这里看到日志

  • 我的appium/python测试套件的测试都需要先登录应用程序。GitHub示例仅展示如何为套件中的每个测试设置/拆卸Web驱动程序。在我的情况下,它将是伟大的重用现有的WebDriver会话为所有的测试。 但是,在AWS设备场环境中,每个测试方法都会执行setUpClass/tearDownClass方法。我试图将webdriver创建为类变量,但在AWS设备场中无效(尽管在本地有效)。 设置

  • 我已将AWS设备场配置为对我的应用程序运行自动测试。 在这篇文章之后,我成功地运行了使用和测试类型的测试。 现在我想使用Appium测试NG类型。我已经安装了appium模块并使其运行: 但是现在呢?如何编写和使用离子2测试? 这里说: 您的Android Appium Java TestNG测试必须包含在。他们指向Appium的官方网站,进一步解释如何在android或ios设备上使用Appiu

  • 问题内容: 我写了JUnit5扩展。但是我找不到方法如何获得测试结果。 扩展看起来像这样: 有什么提示如何获得测试结果? 问题答案: 正如其他答案所指出的那样,JUnit会将失​​败的测试与异常进行通信,因此可以使用来了解发生的情况。请注意,这很容易出错,因为以后运行的扩展程序仍可能无法通过测试。 另一种方法是注册自定义TestExecutionListener。不过,这两种方法都有点round回

  • 我使用的是Appium Version1.9.1和基于Appium Java TestNG的框架构建,但是当我在真实设备上的AWS设备场上执行I时,我会得到以下错误: WebDriverException:处理命令时发生未知的服务器端错误。原始错误:未处理的endpoint:/session/bc6e4901-43a6-4c66-913a-ebaf8482dd4b/wda/screen-http:

  • 我正在使用一个挂起的意图来启动一个闹钟(使用AlarmManager)。我需要不同的结果代码启动的活动,基于两个按钮中的哪一个放在它的用户点击(Snooze或取消)。我怎么得到这个结果?不幸的是,在关闭活动上启动finish()方法之后,没有在父活动中启动onActivityResult()方法。在Android文档中,它指出