今天执行iOS UI 自动化测试专项时,遇到了这样的报错,明明有这个测试方法为什么找不到呢?
ERROR: not found: /Users/testmanzhang/PycharmProjects/xxxxxxxxxx/test_open_stream.py::test_ccc_open_stream (no match in any of [<Module test_open_stream.py>])
随着测试代码越来越多,测试方法越来越多,有时在开发完成后就不记得测试模块的结构是什么了,这样会导致在pytest命令行执行测试方法的时候,出现上面的错误。这里有一招,可以随时查看测试模块的结构,就是pytest -v --collect-only,下面是我本地执行后的结果,从这个结果中可以看到新开发的测试方法的位置:
testmanzhang@TestMandeMBP xxxxxxxxx % pytest -v --collect-only=================================================================== test session starts ===================================================================
platform darwin -- Python 3.12.1, pytest-8.3.2, pluggy-1.5.0 -- /usr/local/bin/python3.12
cachedir: .pytest_cache
rootdir: /Users/testmanzhang/PycharmProjects/xxxxxxxxx
configfile: pytest.ini
plugins: repeat-0.9.3, anyio-4.6.0, allure-pytest-2.13.5, xonsh-0.18.3
collected 6 items <Dir xxxxxxxxxx><Module test_xxxx_login.py><Function test_login><Function test_logout><Module test_open_stream.py><Class TestOpenStream>开流专项,例如,多次开流,每次记录节点时间<Function test_xxx_open_stream>:前提条件:① xxxxxxxxxx;② xxxxxxxxxx:设备为在线状态,可以开流<Function test_xxx_open_stream[xxx]>:前提条件:① xxxxxxxxxx;② xxxxxxxxxx:设备为在线状态,可以开流<Module test_user_center.py><Function test_login><Function test_logout>
需要注意的是,在执行pytest -v --collect-only前,要先进入到工程目录,之后再执行,不然的话它就会一直在collecting,这是我在根目录中执行的结果:
在获取到测试模块的结构之后,我们就可以调整命令行中测试方法的层级了:
pytest -q -s -ra --count=200 test_open_stream.py::TestOpenStream::test_xxx_open_stream --alluredir=./report/xxx/resource | tee pytest_summary.log