[ROS2] colcon test discovery
Hi all,
I am writing some tests for my ROS2 Python package. I want to specify different levels of tests (unittest, integrationtests, system tests, ...) and run them with colcon test
. I have the different tests in subfolders in the test directory:
my_pkg
├── launch
│ └── example.launch.py
├── my_pkg
│ ├── __init__.py
│ ├── my_node.py
│ ├── publisher.py
│ ├── subscriber.py
│ └── transformer.py
├── package.xml
├── README.md
├── resource
│ └── my_pkg
├── setup.cfg
├── setup.py
└── test
├── integrationtest
│ └── test_integration.py
└── unittest
├── test_pytest.py
└── test_unittest.py
Colcon detects all tests, what is great. But sometimes I only want run e.g. the tests in the directory unittests. That woult be useful, because some of my integration or system tests needs a long time!
Are there any possibilities to run a specific subfolder of the test directory with colcon test
? Have colcon
some command line arguments for this?
Or is there another way to go?
Someone can correct me if I am wrong, but from my understanding of
colcon test
, there isn't a built-in way of selecting to only run tests from a given sub-folder of a package.A workaround that comes to mind would be to create sub-packages (e.g.
my_pkg_integrationtest
,my_pkg_unittest
) and to list them inmy_pkg
'spackage.xml
as test_dependencies.But I'd be surprised if there wasn't someone more knowledgeable out there with a better solution than that
Thanks for your reply. My first thought was also that I could call up the various tests via side-/sub-packages. However, I dont like the structure of my repository with too many sub-packages. As a current workaround I call
pytest
instead ofcolcon test
like:If someone has another way to call the tests only from a subfolder please let me know!