本頁介紹如何配置 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
。