Передача параметров из файла запуска в скрипт python в модульном тесте (Ростест) - PullRequest
0 голосов
/ 25 февраля 2020

Я работаю над реализацией 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) ------------------------------------------------------------------"

1 Ответ

0 голосов
/ 06 марта 2020

Решено разделить тест в разных файлах, причина в том, что несколько прогонов тестируют разные биты значений перевесов функциональности с сервера параметров

...