Я работаю над реализацией Python модульного теста (rostest), посредством которого я могу передать параметры из файла roslaunch в мой скрипт python generi c для тестирования. Однако мой тест не пройден, и обычно он должен пройти. Я вставлю здесь свой код, а также буду рад получить отзывы о том, почему это происходит.
Конечная цель - создать один шаблон c python, который можно использовать во многих файлах запуска. интеграционный тест
параметры чтения моего скрипта из файла roslaunch:
class itn_rtest_group1template(unittest.TestCase):
success = False
global topic1
global datatype1
global topic2
global datatype2
topic1=rospy.get_param("/topic1")
datatype1=rospy.get_param('/datatype1')
topic2=rospy.get_param("/topic2")
datatype2=rospy.get_param("/datatype2")
print(topic1,datatype1,topic2,datatype2)
#def __init__(self, *args, **kwargs):
#rospy.loginfo("topic1: %s, datatype1: %s, topic2: %s, datatype2: %s", topic1, datatype1, topic2, datatype2)
def callback(self,topic1,datatype1,topic2,datatype2):
# This is the callback function for Group 1 testcase
#self.rospy.loginfo('topic1 = %s', topic1)
#self.rospy.loginfo('topic1 = %s', topic2)
rospy.loginfo(rospy.get_caller_id() + "topic1: %s, datatype1: %s, topic2: %s, datatype2: %s",topic1,datatype1,topic2,datatype2)
self.success = True
def test_WI_group1template(self):
#This is the python Unit test generic template implementation
rospy.init_node('WI_group1template', anonymous=True)
#rospy.loginfo("topic1: %s, datatype1: %s, topic2: %s, datatype2: %s", topic1, datatype1, topic2,datatype2 )
#print("start integration testing node")
rospy.Subscriber("topic_name", String,self.callback,(topic1, datatype1))
rospy.Subscriber("topic_name", String, self.callback,(topic2, datatype2))
timeout_t = time.time() + 5.0
while (not rospy.is_shutdown() and time.time() < timeout_t and(not self.success)):
time.sleep(0.1)
if __name__ == '__main__':
import rosunit
rostest.rosrun(PKG, 'WI_group1template', itn_rtest_group1template)
Файл запуска выглядит так
<launch>
<param name="topic1" value="chatter"/>
<param name="datatype1" value="String" />
<param name="topic2" value="gemoto"/>
<param name="datatype2" value="String"/>
<node name="WI_group1template" pkg="itn_rtest" type="int_testtemplate_group1.py" output="screen"
clear_params="true"/>
<test test-name="WI_XXXX" pkg="itn_rtest" type="int_testtemplate_group1.py" > </test>
</launch>
Моя цель - иметь один python сценарий, где я могу тестировать различные коммуникации в программном обеспечении, просто создавая различные файлы roslaunch и передавая параметры через файлы roslaunch, которые будут считываться и использоваться шаблоном python.
Когда я запускаю свой файл roslaunch, я получить этот журнал ошибок, буду рад, если я могу получить помощь по этому поводу.
ERROR log "False is not true File "/usr/lib/python2.7/unittest/case.py", line 329, in run testMethod() File "/home/user/integrationtest/src/itn_rtest/test/int_testtemplate_group1.py", line 65, in test_WI_group1template self.assert_(self.success) File "/usr/lib/python2.7/unittest/case.py", line 422, in assertTrue raise self.failureException(msg) ------------------------------------------------------------------"