Я хочу разработать тестовую программу для тестирования приложения C ++ с использованием встроенного Python.Это пример, который я хочу изменить: https://github.com/skebanga/py_embed.
Я хочу вместо жесткого кодирования 5 в test.py.Я хочу передать разные значения для разных тестовых случаев.Возможно ли это?
Перед модификацией: вывод приведенного выше примера будет
./my_program
created script
running
result=10
Моя идея - добавить xmlrpcserver в test.py для приема входных данных.После того как я изменил test.py, как показано ниже, перестроил и запустил, поток удерживается сервером xmlrpc.При выходе будет выдана ошибка, как показано ниже.
Есть предложения?
./my_program
Listening on port 8000 ...
Hello
127.0.0.1 - - [18/Oct/2018 15:06:34] "POST /RPC2 HTTP/1.1" 200 -
^Cterminate called after throwing an instance of 'boost::python::error_already_set'
Aborted (core dumped)
Изменен test.py
from SimpleXMLRPCServer import SimpleXMLRPCRequestHandler
from SimpleXMLRPCServer import SimpleXMLRPCServer
class Script(object):
def __init__(self, ifc):
print 'created script'
self.ifc = ifc
def run(self):
print 'running'
self.ifc.execute(5)
self.startRPC()
def result(self, i):
print 'result={}'.format(i)
def startRPC(self):
server = SimpleXMLRPCServer(("", 8000), allow_none=True)
print ("Listening on port 8000 ...")
server.register_instance(self)
server.serve_forever()
Я изменил test.py, как обновлено выше.Я также добавил try и catch для main ()
int main(){
try{
....
} catch (const bp::error_already_set&)
{
PyErr_Print();
return 1;
}
}
Вывод:
./my_program
created script
running
result=10
Listening on port 8000 ...
^CTraceback (most recent call last):
File "test.py", line 16, in run
self.startRPC()
File "test.py", line 31, in startRPC
server.serve_forever()
File "/usr/lib/python2.7/SocketServer.py", line 236, in serve_forever
poll_interval)
File "/usr/lib/python2.7/SocketServer.py", line 155, in _eintr_retry
return func(*args)
KeyboardInterrupt
На самом деле я заметил, что дамп ядра больше не существует.Это потому что исключение поймано?Спасибо за вашу помощь.