rosテストのお勉強(python)
unittest
CMakeLists.txt
catkin_python_setup() if(CATKIN_ENABLE_TESTING) find_package(rostest REQUIRED) add_rostest(test/mytest.test) endif()
package.xml
<test_depend>rostest</test_depend> <test_depend>python-nose</test_depend>
↑テストにnoseをつかう場合
mytest.test
<launch> <node pkg="mypkg" type="mynode" name="mynode" /> <test test-name="test_mynode" pkg="mypkg" type="test_mynode.py" /> </launch>
test_mynode.py
#!/usr/bin/env python from nose.tools import eq_, raises import unittest import rostest, rospy from mypkg.mytest import MyTest class TestMyTest(unittest.TestCase): def setUp(self): pass @raises(rospy.ROSException) def test_mytest1(self): instance = MyTest() def test_mytest2(self): eq_(10 / 5, 2) if __name__ == '__main__': rospy.init_node('test_sample') rostest.rosrun('mypkg', 'test_sample', TestMyTest)
実行
$rostest test_rospy/test/mytest.test
setup.py
#!/usr/bin/env python from distutils.core import setup from catkin_pkg.python_setup import generate_distutils_setup setup_args = generate_distutils_setup( packages=['rostest'], package_dir={'': 'src'}, ) setup(**setup_args)
rostest-test.test
<launch> <test test-name="test_rostest" pkg="rostest" type="test_rostest.py" /> </launch>
ディレクトリ構成
参考:
ja/rospy_tutorials/Tutorials/Makefile - ROS Wiki
2. setup スクリプトを書く — Python 3.6.5 ドキュメント
参考:
ROS勉強記録: catkinでのpythonのtestについて
ROS C++コード用テストライブラリgtestの使い方(日本語訳) - MyEnigma
rostest - Minimum Working Example - ROS Answers: Open Source Q&A Forum
noseで気軽にテストを書く(+geventの場合) - Qiita