На этой странице описано, как настроить тесты 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
.