ci: replace pytest function

This commit is contained in:
igor.udot 2024-05-06 11:12:04 +08:00
parent 764433f431
commit 8691672f03
17 changed files with 79 additions and 113 deletions

View File

@ -1,4 +1,4 @@
# SPDX-FileCopyrightText: 2022-2023 Espressif Systems (Shanghai) CO LTD
# SPDX-FileCopyrightText: 2022-2024 Espressif Systems (Shanghai) CO LTD
# SPDX-License-Identifier: Unlicense OR CC0-1.0
import re
@ -22,11 +22,4 @@ def run_multiple_stages(dut: Dut, test_case_num: int, stages: int) -> None:
@pytest.mark.temp_skip_ci(targets=['esp32c5'], reason='C5 has not supported deep sleep') # TODO: [ESP32C5] IDF-8640, IDF-10317
@pytest.mark.generic
def test_app_update(dut: Dut) -> None:
extra_data = dut.parse_test_menu()
for test_case in extra_data:
if test_case.type != 'multi_stage':
dut.write(str(test_case.index))
else:
run_multiple_stages(dut, test_case.index, len(test_case.subcases))
dut.expect_unity_test_output(timeout=90)
dut.expect_exact("Enter next test, or 'enter' to see menu")
dut.run_all_single_board_cases(timeout=90)

View File

@ -1,6 +1,5 @@
# SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD
# SPDX-FileCopyrightText: 2022-2024 Espressif Systems (Shanghai) CO LTD
# SPDX-License-Identifier: CC0-1.0
import pytest
from pytest_embedded import Dut
@ -15,9 +14,7 @@ configurations = [
@pytest.mark.generic
@pytest.mark.parametrize('config', configurations, indirect=True)
def test_cxx_static_init_non_pod(dut: Dut) -> None:
dut.expect_exact('Press ENTER to see the list of tests')
dut.write('\"can use static initializers for non-POD types\"')
dut.expect_unity_test_output()
dut.run_all_single_board_cases(name=['can use static initializers for non-POD types'])
@pytest.mark.esp32
@ -25,9 +22,7 @@ def test_cxx_static_init_non_pod(dut: Dut) -> None:
@pytest.mark.generic
@pytest.mark.parametrize('config', configurations, indirect=True)
def test_cxx_misc(dut: Dut) -> None:
dut.expect_exact('Press ENTER to see the list of tests')
dut.write('[misc]')
dut.expect_unity_test_output()
dut.run_all_single_board_cases(group='misc')
@pytest.mark.esp32

View File

@ -1,6 +1,5 @@
# SPDX-FileCopyrightText: 2021-2022 Espressif Systems (Shanghai) CO LTD
# SPDX-FileCopyrightText: 2021-2024 Espressif Systems (Shanghai) CO LTD
# SPDX-License-Identifier: CC0-1.0
import pytest
from pytest_embedded import Dut
@ -17,6 +16,4 @@ from pytest_embedded import Dut
'release',
], indirect=True)
def test_legacy_temp_sensor_driver(dut: Dut) -> None:
dut.expect('Press ENTER to see the list of tests')
dut.write('*')
dut.expect_unity_test_output(timeout=120)
dut.run_all_single_board_cases(timeout=120)

View File

@ -1,6 +1,5 @@
# SPDX-FileCopyrightText: 2023 Espressif Systems (Shanghai) CO LTD
# SPDX-License-Identifier: CC0-1.0
import pytest
from pytest_embedded import Dut

View File

@ -1,4 +1,4 @@
# SPDX-FileCopyrightText: 2022-2023 Espressif Systems (Shanghai) CO LTD
# SPDX-FileCopyrightText: 2022-2024 Espressif Systems (Shanghai) CO LTD
# SPDX-License-Identifier: CC0-1.0
from typing import Any
@ -9,25 +9,19 @@ from pytest_embedded import Dut
@pytest.mark.generic
@pytest.mark.esp32
def test_rtc_clk(dut: Dut) -> None:
dut.expect_exact('Press ENTER to see the list of tests')
dut.write('[rtc_clk]')
dut.expect_unity_test_output()
dut.run_all_single_board_cases(group='rtc_clk')
@pytest.mark.esp32
@pytest.mark.xtal32k
def test_rtc_xtal32k(dut: Dut) -> None:
dut.expect_exact('Press ENTER to see the list of tests')
dut.write('[test_env=xtal32k]')
dut.expect_unity_test_output()
dut.run_all_single_board_cases(attributes={'test_env': 'xtal32k'})
@pytest.mark.esp32
@pytest.mark.no32kXtal
def test_rtc_no_xtal32k(dut: Dut) -> None:
dut.expect_exact('Press ENTER to see the list of tests')
dut.write('[test_env=noXtal32k]')
dut.expect_unity_test_output()
dut.run_all_single_board_cases(attributes={'test_env': 'noXtal32k'})
@pytest.mark.generic

View File

@ -1,4 +1,4 @@
# SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD
# SPDX-FileCopyrightText: 2022-2024 Espressif Systems (Shanghai) CO LTD
# SPDX-License-Identifier: CC0-1.0
import pytest
from pytest_embedded import Dut
@ -7,8 +7,4 @@ from pytest_embedded import Dut
@pytest.mark.esp32
@pytest.mark.ethernet
def test_esp_netif_vfs_l2tp(dut: Dut) -> None:
dut.expect_exact('Press ENTER to see the list of tests')
dut.write('\n')
dut.expect_exact('Enter test for running.')
dut.write('*')
dut.expect_unity_test_output()
dut.run_all_single_board_cases()

View File

@ -1,6 +1,5 @@
# SPDX-FileCopyrightText: 2023 Espressif Systems (Shanghai) CO LTD
# SPDX-FileCopyrightText: 2023-2024 Espressif Systems (Shanghai) CO LTD
# SPDX-License-Identifier: Apache-2.0
import pytest
from pytest_embedded import Dut

View File

@ -1,6 +1,5 @@
# SPDX-FileCopyrightText: 2022-2023 Espressif Systems (Shanghai) CO LTD
# SPDX-FileCopyrightText: 2022-2024 Espressif Systems (Shanghai) CO LTD
# SPDX-License-Identifier: CC0-1.0
import pytest
from pytest_embedded import Dut
@ -74,13 +73,10 @@ def test_heap(dut: Dut) -> None:
]
)
def test_heap_misc_options(dut: Dut) -> None:
dut.expect_exact('Press ENTER to see the list of tests')
dut.write('"IRAM_8BIT capability test"')
dut.expect_unity_test_output()
dut.expect_exact("Enter next test, or 'enter' to see menu")
dut.write('"test allocation and free function hooks"')
dut.expect_unity_test_output()
dut.run_all_single_board_cases(name=[
'IRAM_8BIT capability test',
'test allocation and free function hooks'
])
dut.expect_exact("Enter next test, or 'enter' to see menu")
dut.write('"When enabled, allocation operation failure generates an abort"')
@ -97,22 +93,10 @@ def test_heap_misc_options(dut: Dut) -> None:
]
)
def test_heap_trace_dump(dut: Dut) -> None:
dut.expect_exact('Press ENTER to see the list of tests')
dut.write('[trace-dump][internal]')
dut.expect('Internal')
dut.expect_exact('Enter next test, or \'enter\' to see menu')
dut.write('[trace-dump][external]')
dut.expect('PSRAM')
dut.expect_exact('Enter next test, or \'enter\' to see menu')
dut.write('[trace-dump][all]')
dut.expect('Internal')
dut.expect('PSRAM')
dut.expect_exact('Enter next test, or \'enter\' to see menu')
dut.write('[heap-trace]')
dut.expect_unity_test_output(timeout=100)
dut.run_all_single_board_cases(group='trace-dump&internal')
dut.run_all_single_board_cases(group='trace-dump&external')
dut.run_all_single_board_cases(group='trace-dump&all')
dut.run_all_single_board_cases(group='heap-trace')
@pytest.mark.generic
@ -124,6 +108,4 @@ def test_heap_trace_dump(dut: Dut) -> None:
]
)
def test_memory_protection(dut: Dut) -> None:
dut.expect_exact('Press ENTER to see the list of tests')
dut.write('[heap][mem_prot]')
dut.expect_unity_test_output(timeout=300)
dut.run_all_single_board_cases(group='heap&mem_prot', timeout=300)

View File

@ -1,6 +1,5 @@
# SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD
# SPDX-License-Identifier: Apache-2.0
import pytest
from pytest_embedded import Dut

View File

@ -1,4 +1,4 @@
# SPDX-FileCopyrightText: 2023 Espressif Systems (Shanghai) CO LTD
# SPDX-FileCopyrightText: 2023-2024 Espressif Systems (Shanghai) CO LTD
# SPDX-License-Identifier: Apache-2.0
import pytest
from pytest_embedded_idf.dut import IdfDut
@ -13,9 +13,7 @@ CONFIGS_NVS_ENCR_FLASH_ENC = [
@pytest.mark.esp32c3
@pytest.mark.parametrize('config', ['default'], indirect=True)
def test_nvs_flash(dut: IdfDut) -> None:
dut.expect_exact('Press ENTER to see the list of tests')
dut.write('![nvs_encr_hmac]')
dut.expect_unity_test_output(timeout=120)
dut.run_all_single_board_cases(group='!nvs_encr_hmac', timeout=120)
@pytest.mark.esp32c3

View File

@ -1,6 +1,5 @@
# SPDX-FileCopyrightText: 2022-2023 Espressif Systems (Shanghai) CO LTD
# SPDX-FileCopyrightText: 2022-2024 Espressif Systems (Shanghai) CO LTD
# SPDX-License-Identifier: CC0-1.0
import pytest
from pytest_embedded import Dut
@ -15,9 +14,7 @@ from pytest_embedded import Dut
indirect=True,
)
def test_pthread(dut: Dut) -> None:
dut.expect_exact('Press ENTER to see the list of tests')
dut.write('![thread-specific]')
dut.expect_unity_test_output(timeout=300)
dut.run_all_single_board_cases(group='!thread-specific', timeout=300)
@pytest.mark.generic
@ -30,9 +27,7 @@ def test_pthread(dut: Dut) -> None:
indirect=True,
)
def test_pthread_single_core(dut: Dut) -> None:
dut.expect_exact('Press ENTER to see the list of tests')
dut.write('![thread-specific]')
dut.expect_unity_test_output(timeout=300)
dut.run_all_single_board_cases(group='!thread-specific', timeout=300)
@pytest.mark.generic

View File

@ -1,6 +1,5 @@
# SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD
# SPDX-FileCopyrightText: 2022-2024 Espressif Systems (Shanghai) CO LTD
# SPDX-License-Identifier: CC0-1.0
import pytest
from pytest_embedded import Dut
@ -13,11 +12,7 @@ from pytest_embedded import Dut
'release',
], indirect=True)
def test_spiffs_generic(dut: Dut) -> None:
dut.expect_exact('Press ENTER to see the list of tests')
dut.write('')
dut.expect_exact('Enter test for running.')
dut.write('*')
dut.expect_unity_test_output(timeout=120)
dut.run_all_single_board_cases(timeout=120)
@pytest.mark.esp32s3
@ -26,8 +21,4 @@ def test_spiffs_generic(dut: Dut) -> None:
'psram',
], indirect=True)
def test_spiffs_psram(dut: Dut) -> None:
dut.expect_exact('Press ENTER to see the list of tests')
dut.write('')
dut.expect_exact('Enter test for running.')
dut.write('*')
dut.expect_unity_test_output(timeout=120)
dut.run_all_single_board_cases(timeout=120)

View File

@ -1,6 +1,5 @@
# SPDX-FileCopyrightText: 2022-2023 Espressif Systems (Shanghai) CO LTD
# SPDX-License-Identifier: CC0-1.0
import pytest
from pytest_embedded import Dut

View File

@ -16,6 +16,4 @@ from pytest_embedded import Dut
indirect=True,
)
def test_touch_element(dut: Dut) -> None:
dut.expect_exact('Press ENTER to see the list of tests')
dut.write('*')
dut.expect_unity_test_output(timeout=120)
dut.run_all_single_board_cases(timeout=120)

View File

@ -1,6 +1,5 @@
# SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD
# SPDX-License-Identifier: CC0-1.0
import pytest
from pytest_embedded import Dut

View File

@ -362,16 +362,32 @@ If you need to run a group of test cases, you may run:
It would trigger all test cases with the ``[psram]`` tag.
.. warning::
If you need to run all test cases except for a specific groups, you may run:
You may also see that there are some test scripts with the following statements, which are deprecated. Please use the suggested one as above.
.. code-block:: python
.. code-block:: python
def test_unity_single_dut(dut: IdfDut):
dut.expect_exact('Press ENTER to see the list of tests')
dut.write('*')
dut.expect_unity_test_output()
dut.run_all_single_board_cases(group='!psram')
This code will trigger all test cases except those with the [psram] tag.
If you need to run a group of test cases filtered by specific attributes, you may run:
.. code-block:: python
def test_rtc_xtal32k(dut: Dut) -> None:
dut.run_all_single_board_cases(attributes={'test_env': 'xtal32k'})
This command will trigger all tests with the attribute ``test_env`` equal to ``xtal32k``.
If you need to run tests by specific names, you may run:
.. code-block:: python
def test_dut_run_all_single_board_cases(dut):
dut.run_all_single_board_cases(name=["normal_case1", "multiple_stages_test"])
This command will trigger ``normal_case1`` and ``multiple_stages_test``
We also provide a fixture ``case_tester`` to trigger all kinds of test cases easier. For example:

View File

@ -362,16 +362,32 @@ ESP-IDF 在主机端使用 pytest 框架(以及一些 pytest 插件)来自
此代码会触发模块包含 ``[psram]`` tag 的所有测试用例。
.. warning::
如需除了某个特定组之外执行测试用例,可运行:
你可能还会看到一些包含以下语句的测试脚本,这些脚本已被弃用。请使用上述建议的方法。
.. code-block:: python
.. code-block:: python
def test_unity_single_dut(dut: IdfDut):
dut.expect_exact('Press ENTER to see the list of tests')
dut.write('*')
dut.expect_unity_test_output()
dut.run_all_single_board_cases(group='!psram')
此代码会触发模块包含 ``[psram]`` tag 以外的所有测试用例。
如需按特定属性执行测试用例,可运行:
.. code-block:: python
def test_rtc_xtal32k(dut: Dut) -> None:
dut.run_all_single_board_cases(attributes={'test_env': 'xtal32k'})
这此代码会触发模块包含具有属性 ``test_env`` 等于 ``xtal32k`` 的测试用例。
如需按特定名称执行测试用例,可运行:
.. code-block:: python
def test_dut_run_all_single_board_cases(dut):
dut.run_all_single_board_cases(name=["normal_case1", "multiple_stages_test"])
这此代码会触发模块包含具有 ``normal_case1````multiple_stages_test`` 名称的测试用例。
我们的 ``case_tester`` 夹具让执行各种测试用例更加简便。例如: