配置 ACTS 测试

本页介绍如何配置 ACTS 测试。

配置来源

Android Comms Test Suite (ACTS)具有三个主要的配置来源:

  • 命令行界面 (CLI)
  • ACTS 配置文件
  • 环境变量

来自这些来源的值组合成一个用于运行 ACTS 测试的配置。如果在多个位置指定了值,则会根据上述顺序覆盖这些值(其中 CLI 优先)。

关于环境变量的说明

在使用环境变量进行 ACTS 测试时要小心。这些值对用户来说是最不可见的,不建议在开发人员工作站之外使用。在 ACTS 自动化测试期间禁用环境变量以防止环境中毒。

必需的配置变量

每个 ACTS 测试都需要设置以下变量。

ACTS 测试路径

ACTS 从单个主要入口位置运行。结果,跑步者不知道测试路径的位置。

使用ACTS_TESTPATH环境变量或命令行中的-tp / --testpaths标志设置测试路径位置。该值可以是目录列表。

ACTS 测试班

ACTS 必须知道要运行哪些测试类。这可以是正则表达式或测试类名称列表。

要设置此值,请在命令行中使用-tc / --test_class标志。请注意,此标志还接受类名列表。类名必须与其对应的文件名匹配,例如SampleTest必须在SampleTest.py中。

ACTS 日志路径

ACTS 必须具有将日志写入除 STDOUT 之外的位置。 ACTS 会写入完整的调试日志,其中包含有助于确定某些测试失败的原因的数据。为防止混乱,ACTS 不会将这些日志写入 STDOUT。

要设置日志路径,请使用ACTS_LOGPATH环境变量或命令行中的-lp / --logpath标志。

ACTS 配置路径

要运行测试,ACTS 必须知道存在什么测试平台。 ACTS 配置包含测试平台中的所有设备,以及可能需要的任何特殊测试或环境参数。使用-c / --config在命令行上设置此值。

如果配置中有多个测试平台,ACTS 会为每个测试平台运行测试。要仅对列表中的单个测试平台运行测试,请使用-tb/--testbed <NAME>命令行参数。

本地工作站示例

大多数 ACTS 用户在单个 Android 存储库分支上开发,并且具有类似于此的设置:

# in ~/.bashrc
ACTS_LOGPATH='/tmp/acts_logpath'
ACTS_TESTPATH='~/android/<REPO_BRANCH>/tools/test/connectivity/acts_tests/'

# On cmdline
$ act.py -c ~/acts_configs/local_config.json -tc SampleTest -tb marlin

如果 ACTS 用户在多个分支上运行,他们通常从 act acts/framework目录运行 ACTS,并使用ACTS_TESTPATH的相对路径:

# in ~/.bashrc
ACTS_LOGPATH='/tmp/acts_logpath'
ACTS_TESTPATH='../acts_tests/'

# On cmdline
$ cd ~/android/master/tools/test/connectivity/acts_tests/acts_contrib/
$ act.py -c ~/acts_configs/local_config.json -tc SampleTest -tb marlin

配置您的测试平台

ACTS 配置文件提供了在硬件设备上运行测试的所有必要信息:

{
  "testbed": {
    "my_testbed": {
      "my_testbed_value": "value"
    },
    "another_testbed": {
      "AndroidDevice": [
        "53R147"
      ]
    }
  },
  "user_parameter_1": "special environment value",
  "user_parameter_2": "other special value"
}

此配置的基本单元是测试平台。在上面的示例配置中, my_testbed是使用单个 testbed 值创建的。第二个测试平台another_testbed有一个特殊的控制器配置,用于保存 Android 设备列表的信息。这些设备存储在self.android_devices下的设备列表中。请注意,如果测试平台未指定AndroidDevice对象,则需要AndroidDevice对象的测试类会引发异常。有关 ACTS 附带的受支持控制器配置的完整列表,请参阅/acts/framework/acts/controllers/中的列表。

所有其他值(不是上一节中提到的特殊值)都作为字典存储在self.user_params中。这是保存环境或测试信息的好地方,例如手机是否处于计量数据环境中,或者为测试收集数据需要多长时间。

AndroidDevice 的特殊情况

当您希望拥有多个具有不同属性的设备时,为了开发方便, AndroidDevice有一些特殊情况。

JSON 配置格式

以下 JSON 中的所有键/值对都设置为对应的AndroidDevice对象。如果配置尝试覆盖AndroidDevice属性中定义的参数,则会引发ControllerError

  "AndroidDevice": [{"serial": "XXXXXX", "label": "publisher"},
                    {"serial": "YYYYYY", "label": "subscriber", "user_parameter_1": "anything"}]

然后在测试脚本中,您可以使用过滤器函数来检索正确的设备并从设备对象访问额外的参数:

  def setup_class(self):
      self.pub = next(filter(lambda ad: ad.label == 'publisher',
                             self.android_devices))
      self.sub = next(filter(lambda ad: ad.label == 'user_parameter_1',
                             self.android_devices))

可选参数

以下是可选参数:

  • adb_logcat_param :附加到adb logcat命令的字符串,用于收集 adb 日志。默认情况下,使用adb logcat -v threadtime -b all 。如果设置了adb_logcat_param ,则覆盖-b all部分。例如,将adb_logcat_param设置为-b radio会将命令更改为adb logcat -v threadtime -b radio