Настройка тестов ACTS

На этой странице описано, как настроить тесты ACTS.

Источники конфигурации

Android Comms Test Suite (ACTS) имеет три основных источника конфигурации:

  • Интерфейс командной строки (CLI)
  • Конфигурационный файл ACTS
  • Переменные среды

Значения из этих источников объединяются в единую конфигурацию, которая используется для запуска теста ACTS. Если значения указаны в нескольких местах, они перезаписываются в указанном выше порядке (где интерфейс командной строки имеет приоритет).

Примечание о переменных среды

Будьте осторожны при использовании переменных среды для тестов 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 работают в нескольких ветвях, они часто запускают ACTS из каталога acts/framework и используют относительный путь для ACTS_TESTPATH :

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

# On cmdline
$ cd ~/android/main/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 создается с одним значением тестового стенда. Второй тестовый стенд, 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 .