def test_9_ask1009(self): """Не работает, задание №51664. Направляет запрос на тестового человека по путевкам в лагеря. Ожидаю данные за 2014г. Выделение путевки в санаторный оздоровительный лагерь""" with open('Шаблоны/Request_1009.xml', mode='r', encoding='utf-8') as f: shablon = f.read() parent = dict() parent['famil'] = "Тестовая" parent['name'] = "Путевка" parent['otch'] = "Лагерь" parent['snils'] = "" parent['drog'] = "01.03.2005" name = 'Тестовая_без_СНИЛС' obr = 'Образцы/' + name + '.xml' req = smev.change(shablon, parent) req = smev.change(req, TI) print("Отрабатываем пример", name) res = service_1009.service_1009(req, TI, name) # вытащим из нее строку между тегов <smev:MessageData> answ = res[res.find('<smev:MessageData>'):res.rfind('</smev:MessageData>')] # сравнить с образцом with open(obr, mode='r', encoding='utf-8') as f: good = f.read() self.assertEqual(good, answ, 'Второй ответ 1009 сервиса не совпадает с образцом %s' % obr)
def test_8_ask1009(self): """Направляет запрос на тестового человека по путевкам в лагеря. Ожидаю данные за 2014г. и 2015г. Выделение путевки в санаторный оздоровительный лагерь, СНИЛС 222-222-222-31 - 2 путевки 1. выделана с 10.06.2014 2. выделена с 10.08.2015 Т.к. выгрузку за 2015г не делали, должна быть только одна путевка.""" with open('Шаблоны/Request_1009.xml', mode='r', encoding='utf-8') as f: shablon = f.read() parent = dict() parent['famil'] = "" parent['name'] = "" parent['otch'] = "" parent['snils'] = "222-222-222-31" parent['drog'] = "" name = '222-222-222-31(4)' obr = 'Образцы/' + '222-222-222-31(3)' + '.xml' req = smev.change(shablon, parent) req = smev.change(req, TI) print("Отрабатываем пример", name) res = service_1009.service_1009(req, TI, name) # вытащим из нее строку между тегов <smev:MessageData> answ = res[res.find('<smev:MessageData>'):res.rfind('</smev:MessageData>')] # сравнить с образцом with open(obr, mode='r', encoding='utf-8') as f: good = f.read() self.assertEqual(good, answ, '4-й ответ 1009 сервиса не совпадает с образцом %s' % obr)
def test_2_ask1005(self): """Направляет запрос на тестового человека, проверит что сервис ответил о неполучении, в запросе ФИО+ДР+ДУЛ""" # образец people = dict(lastName='Ежемесячные', firstName='Денежные', middleName='Выплаты', birthday='1960-09-03', documentType='', series='6705', number='517705', exist='0', paySource='', dateEnd='', cardExist='', TransCardNum='', test='1005_1') # очищаю данные по району delTI() # проверим, что очистилось нормально count = checkTI(people) self.assertEqual(count, 0, 'Ожидали, что для %s %s %s будут удалены данные 1005 сервиса, но остально %s строк' % (people['lastName'], people['firstName'], people['middleName'], count)) # отправит запрос на 1005 сервис with open('Шаблоны/Request_1005.xml', mode='r', encoding='utf-8') as f: shablon = f.read() req = smev.change(shablon, people) req = smev.change(req, TI) print("Отрабатываем пример", people['test']) res = test_1005.service_1005(req, TI, people['test']) resDict = test_1005.print_1005(res) err = test_1005.equal_1005(people, resDict) # проверит, что ответ совпадает с образцом if err: self.fail('Ответ сервиса отличается от образца!\n %s' % err)
def test_4_ask1005(self): """Направляет запрос на тестового человека, проверит, что ответил транспортной картой, в запросе ФИО+ДР+ДУЛ""" # образец people = dict(lastName='Ежемесячные', firstName='Денежные', middleName='Выплаты', birthday='1960-09-03', documentType='', series='6705', number='517705', exist='1', paySource='Средства регионального бюджета', dateEnd='2020-02-29', cardExist='1', TransCardNum='1234567890', test='1005_4') # отправит запрос на 1005 сервис with open('Шаблоны/Request_1005.xml', mode='r', encoding='utf-8') as f: shablon = f.read() req = smev.change(shablon, people) req = smev.change(req, TI) print("Отрабатываем пример", people['test']) res = test_1005.service_1005(req, TI, people['test']) resDict = test_1005.print_1005(res) err = test_1005.equal_1005(people, resDict) # проверит, что ответ совпадает с образцом if err: self.fail('Ответ сервиса отличается от образца!\n %s' % err)
def test_1009(IS): err = 0 terr = 0 # Выполняется если файл запускается как программа print("Получение документации 1009-сервиса (Предоставления путевки)") print("*******************************************") Parents, Errors = readConfig('config_1009.ini') if Errors == 0: print("Загрузили конфигурационный файл") else: print("При загрузке конфигурационного файла возникли ошибки") exit(1) # Перебираем всех тестовых родителей fp = open('Шаблоны/Request_1009.xml', mode='r', encoding='utf-8') shablon = fp.read() fp.close() smev.get_wsdl(IS, IS['url']+"SMEV/permit256.ashx", '1009.wsdl') for parent in Parents: req = smev.change(shablon, parent) req = smev.change(req, IS) print ("Отрабатываем пример", parent['test']) res = service_1009(req, IS, parent['test']) # проверяем результат if parent['md5']: err = smev.check(res, parent['test'], parent['md5']) if err > 0: print('Ошибка!!! Не совпадает контрольная суммму блока smev:MessageData.') terr += err return terr
def test_1005(IS): err = 0 terr = 0 print("Получение документации 1005-сервиса") print("*******************************************") # Загрузка настроек из конфигурационного файла Parents, Errors = readConfig("config_1005.ini") if Errors == 0: print("Загрузили конфигурационный файл") else: print("При загрузке конфигурационного файла возникли ошибки") exit(1) start = time.time() # получение WSDL url = '/Socportal/SMEV/Transport.ashx' #print ("Пытаемся получить WSDL по адресу:",\ # 'http://%s:%s%s?wsdl' % (IS['adr'], IS['port'], url)) errMsg = smev.get_wsdl(IS, url) if errMsg: print(errMsg) terr += 1 # Перебираем всех тестовых родителей shablon = open('Шаблоны/Request_1005.xml', mode='r', encoding='utf-8').read() for parent in Parents: req = smev.change(shablon, parent) req = smev.change(req, IS) print("Отправляем запрос на гражданина: %s (%s)" % (parent['famil'], parent['test'])) # возвращает XML от сервера result = service_1005(req, IS, parent['test']) # пытаемся напечатать ответ в понятном виде if result: if parent['md5']: err = smev.check(result, parent['test'], parent['md5']) if err > 0: print('Ошибка!!! Не совпадает контрольная суммму блока smev:MessageData.') else: print('****************************') print_1005(result) print('****************************') else: print("ОШИБКА! Ответ не получен") err =1 terr += err post = { "date": datetime.datetime.now(), "name": "Тестирование 1005 сервиса", "comment": IS['comment'], "version": IS['version'], "data": { "Итого": time.time() - start }, "errors": terr, "address": 'http://%s:%s%sSMEV/Transport.ashx' % (IS['adr'], IS['port'], IS['url']) } print("Все запросы и ответы сохранены в папке Результаты") return post
def test_5_ask1005(self): """Направляет запрос на тестового человека, проверит, что ответил транспортной картой, в запросе ФИО+ДР""" # образец people = dict(lastName='Ежемесячные', firstName='Денежные', middleName='Выплаты', birthday='1960-09-03', documentType='', series='', number='', exist='1', paySource='Тестовый скрипт', dateEnd='2022-11-10', cardExist='1', TransCardNum='1234560', test='1005_5') DB = TI conS = "DRIVER=FreeTDS; SERVER=%s; PORT=%s; DATABASE=%s; UID=sa; PWD=%s; TDS_Version=8.0; ClientCharset=UTF8; autocommit=True" \ % (DB['DB_address'], DB['DB_port'], DB['DB_name'], DB['DB_password']) try: conTI = pypyodbc.connect(conS) except: print("Возникла ошибка при соединении с БД АСП") exit(1) cur = conTI.cursor() try: cur.execute("""insert into SMEV_SERVICE_TRANSPORT (FAMIL, IMJA, OTCH, DROG, Exist, DateEnd, TransCardNum, PaySource, eservice_users_id, TransCard) values(?, ?, ?, '1960-09-03', 1, '2022-11-10', '1234560', ?, 159, 1)""", (people['lastName'], people['firstName'], people['middleName'],'Тестовый скрипт')) conTI.commit() except: print('При создании тестового человека возникли ошибки') cur.execute("select count(id) from SMEV_SERVICE_TRANSPORT where famil=? and imja=? and OTCH=?", (people['lastName'], people['firstName'], people['middleName'])) count = cur.fetchone()[0] self.assertEqual(count, 2, 'Должно быть в БД 2 человека, получилось %s' % count) # отправит запрос на 1005 сервис with open('Шаблоны/Request_1005.xml', mode='r', encoding='utf-8') as f: shablon = f.read() req = smev.change(shablon, people) req = smev.change(req, TI) print("Отрабатываем пример", people['test']) res = test_1005.service_1005(req, TI, people['test']) resDict = test_1005.print_1005(res) err = test_1005.equal_1005(people, resDict) # проверит, что ответ совпадает с образцом if err: self.fail('Ответ сервиса отличается от образца!\n %s' % err)
def test_1007(IS): err = 0 terr = 0 # Выполняется если файл запускается как программа print("Получение документации 1007-сервиса (Ветеран)") print("*******************************************") Parents, Errors = readConfig('config_1007.ini') if Errors == 0: print("Загрузили конфигурационный файл") else: print("При загрузке конфигурационного файла возникли ошибки") exit(1) start = time.time() # Перебираем всех тестовых родителей shablon = open('Шаблоны/Request_1007.xml', mode='r', encoding='utf-8').read() smev.get_wsdl(IS, IS['url'] + "SMEV/VeteranWork.ashx", '1007.wsdl') for parent in Parents: req = smev.change(shablon, parent) req = smev.change(req, IS) print("Отрабатываем пример", parent['test']) res = service_1007(req, IS, parent['test']) # проверяем результат if parent['md5']: err = smev.check(res, parent['test'], parent['md5']) if err > 0: print( 'Ошибка!!! Не совпадает контрольная суммму блока smev:MessageData.' ) terr += err post = { "date": datetime.datetime.now(), "name": "Тестирование 1007 сервиса", "comment": IS['comment'], "version": IS['version'], "data": { "Итого": time.time() - start }, "errors": terr, "address": 'http://%s:%s%sSMEV/VeteranWork.ashx' % (IS['adr'], IS['port'], IS['url']) } return post
def test_1003(IS): err = 0 print("Получение документации 1003-сервиса") print("*******************************************") Parents, Errors = readConfig('config_1003.ini') if Errors == 0: print("Загрузили конфигурационный файл") else: print("При загрузке конфигурационного файла возникли ошибки") exit(1) start = time.time() shablon = open('Шаблоны/Request_1003.xml', mode='r', encoding='utf-8').read() con = http.client.HTTPConnection(IS['adr'], IS['port']) smev.get_wsdl(IS, IS['url'] + "SMEV/ManyChildren.ashx", '1003.wsdl') # Перебираем всех тестовых родителей for parent in Parents: req = smev.change(shablon, parent) req = smev.change(req, IS) print("Отрабатываем пример", parent['test']) result = service_1003(req, IS, con, parent['test']) if parent['md5']: err1 = smev.check(result, parent['test'], parent['md5']) if err1 > 0: print( 'Ошибка!!! Не совпадает контрольная суммму блока smev:MessageData.' ) err += err1 post = { "date": datetime.datetime.now(), "name": "Тестирование 1003 сервиса", "comment": IS['comment'], "version": IS['version'], "data": { "Итого": time.time() - start }, "errors": err, "address": 'http://%s:%s%sSMEV/ManyChildren.ashx' % (IS['adr'], IS['port'], IS['url']) } con.close() return post
def service_1003(req, IS, con, name='1003'): '''Получает ответ от 1003 сервиса, подставляет текущую дату в исходный файл. req: строка запроса (обязательный,в нем меняется время, наименование ИС, КОД, ОКТМО) numer: (обязательный, номер для образования имени) IS: обязательный, словарь. Наименование ИС, мнемоника, ОКТМО ответ сервера в строке или None в случае ошибки con: соединение к сервису ''' # проводим замены s = smev.change(req, IS) # сохранить запрос smev.write_file(s, name) # соединяется с веб-сервисом con = http.client.HTTPConnection(IS['adr'], IS['port']) # пытаемся отправить 1-ю часть и получить guid headers = {"Content-Type": "text/xml; charset=utf-8", "SOAPAction": "http://socit.ru/ManyChildren"} try: con.request("POST", IS['url']+"SMEV/ManyChildren.ashx", s.encode('utf-8'), headers=headers) result = con.getresponse().read() result = result.decode('utf-8') except: Type, Value, Trace = sys.exc_info() print("Не удалось обратится к методу Request (1-я часть запроса), возникли ошибки:") print("Тип:", Type, "Значение:", Value) print("Выполнение будет продолжено") result = None else: # проверим, нет ли ошибки в 1-й части smev.write_file(result, name) con.close() return result
def service_510(req, IS, name='510'): """Получает ответ от 510 сервиса req: строка запроса (обязательный,в нем меняется время, наименование ИС, КОД, ОКТМО) numer: (обязательный, номер для образования имени) IS: обязательный, словарь. Наименование ИС, мнемоника, ОКТМО ответ сервера в строке или None в случае ошибки """ # проводим замены s = smev.change(req, IS) # сохранить запрос smev.write_file(s, name) # соединяется с веб-сервисом con = http.client.HTTPConnection(IS['adr'], IS['port']) # пытаемся отправить 1-ю часть и получить ответ headers = {"Content-Type": "text/xml; charset=utf-8", "SOAPAction": "queryLongServicePension"} try: con.request("POST", IS['url']+"/SMEV/GosPension256.ashx", s.encode('utf-8'), headers=headers) result = con.getresponse().read() result = result.decode('utf-8') except: Type, Value, Trace = sys.exc_info() print("Не удалось обратится к методу Request (1-я часть запроса), возникли ошибки:") print("Тип:", Type, "Значение:", Value) print("Выполнение будет продолжено") result = None else: # проверим, нет ли ошибки в 1-й части smev.write_file(result, name) con.close() return result
def pguChange(req, IS, SERVICE_CODE=None, CASE_NUM='1231231666', SNILS='111-111-111 11'): if SERVICE_CODE is None: SERVICE_CODE = IS['servicecode'] req = req.replace("#SERVICE_CODE#", SERVICE_CODE) req = req.replace("#CASE_NUM#", CASE_NUM) req = req.replace("#SNILS#", SNILS) return smev.change(req, IS)
def test_1009(IS): err = 0 terr = 0 # Выполняется если файл запускается как программа print("Получение документации 1009-сервиса (Предоставления путевки)") print("*******************************************") Parents, Errors = readConfig('config_1009.ini') if Errors == 0: print("Загрузили конфигурационный файл") else: print("При загрузке конфигурационного файла возникли ошибки") exit(1) start = time.time() # Перебираем всех тестовых родителей shablon = open('Шаблоны/Request_1009.xml', mode='r', encoding='utf-8').read() smev.get_wsdl(IS, IS['url']+"SMEV/permit256.ashx", '1009.wsdl') for parent in Parents: req = smev.change(shablon, parent) req = smev.change(req, IS) print ("Отрабатываем пример", parent['test']) res = service_1009(req, IS, parent['test']) # проверяем результат if parent['md5']: err = smev.check(res, parent['test'], parent['md5']) if err > 0: print('Ошибка!!! Не совпадает контрольная суммму блока smev:MessageData.') terr += err post = { "date": datetime.datetime.now(), "name": "Тестирование 1009 сервиса", "comment": IS['comment'], "version": IS['version'], "data": { "Итого": time.time() - start }, "errors": terr, "address": 'http://%s:%s%sSMEV/permit256.ashx' % (IS['adr'], IS['port'], IS['url']) } return post
def test_2_ask1009(self): """Направляет запрос на тестового человека по путевкам в лагеря. Ожидаю пустой ответ. Выделение путевки в санаторный оздоровительный лагерь, СНИЛС 222-222-222-31 - 2 путевки 1. выделана с 10.06.2014 2. выделена с 10.08.2015 Т.к. выгрузку за 2015г не делали, должна быть только одна путевка.""" # очищаю имеющееся по ФИО fioList = (dict(famil='Тестовая', name='Путевка', otch='Лагерь'), dict(famil='Тестов', name='Путевка', otch='Лагерь')) for people in fioList: delTI(people) # проверим, что очистилось нормально for i in (0,1): people = fioList[i] print('Тест №2. Проверяю для', people['famil'], people['name'], people['otch']) count = checkTI(people) self.assertEqual(count, 0, 'Ожидали, что для %s %s %s будут удалены данные 1009 сервиса, но остально %s строк' % (people['famil'], people['name'], people['otch'], count)) with open('Шаблоны/Request_1009.xml', mode='r', encoding='utf-8') as f: shablon = f.read() parent = dict() parent['famil'] = "" parent['name'] = "" parent['otch'] = "" parent['snils'] = "222-222-222-31" parent['drog'] = "" name = '222-222-222-31(1)' obr = 'Образцы/' + name + '.xml' req = smev.change(shablon, parent) req = smev.change(req, TI) print("Отрабатываем пример", name) res = service_1009.service_1009(req, TI, name) # вытащим из нее строку между тегов <smev:MessageData> answ = res[res.find('<smev:MessageData>'):res.rfind('</smev:MessageData>')] # сравнить с образцом with open(obr, mode='r', encoding='utf-8') as f: good = f.read() self.assertEqual(good, answ, 'Первый ответ 1009 сервиса не совпадает с образцом %s' % obr)
def test_1003(IS): err = 0 print("Получение документации 1003-сервиса") print("*******************************************") Parents, Errors = readConfig('config_1003.ini') if Errors == 0: print("Загрузили конфигурационный файл") else: print("При загрузке конфигурационного файла возникли ошибки") exit(1) start = time.time() shablon = open('Шаблоны/Request_1003.xml', mode='r', encoding='utf-8').read() con = http.client.HTTPConnection(IS['adr'], IS['port']) smev.get_wsdl(IS, IS['url']+"SMEV/ManyChildren.ashx", '1003.wsdl') # Перебираем всех тестовых родителей for parent in Parents: req = smev.change(shablon, parent) req = smev.change(req, IS) print ("Отрабатываем пример", parent['test']) result = service_1003(req, IS, con, parent['test']) if parent['md5']: err1 = smev.check(result, parent['test'], parent['md5']) if err1>0: print('Ошибка!!! Не совпадает контрольная суммму блока smev:MessageData.') err += err1 post = { "date": datetime.datetime.now(), "name": "Тестирование 1003 сервиса", "comment": IS['comment'], "version": IS['version'], "data": { "Итого": time.time() - start }, "errors": err, "address": 'http://%s:%s%sSMEV/ManyChildren.ashx' % (IS['adr'], IS['port'], IS['url']) } con.close() return post
def test_1004(IS): print("Получение документации 1004-сервиса") print("*******************************************") # чтение файла конфигурации humans, Errors = readConfig('config_1004.ini') if Errors == 0: print("Загрузили конфигурационный файл") else: print("При загрузке конфигурационного файла возникли ошибки") exit(1) err = 0 start = time.time() # получение WSDL adr = IS['url']+"SMEV/ResidencePermit.ashx" errMsg = smev.get_wsdl(IS, adr, '1004.wsdl') if errMsg: print(errMsg) err +=1 # отправляем запросы shablon = open('Шаблоны/Request_1004.xml', mode='r', encoding='utf-8').read() # по списку людей for test in humans.keys(): print("Обрабатываем пример", test) req = smev.change(shablon, IS) req = changePers(req, humans[test]) result = service_1004(req, IS, test) if humans[test][0]['md5']: err1 = smev.check(result, test, humans[test][0]['md5']) if err1 > 0: print('Ошибка!!! Не совпадает контрольная суммму блока smev:MessageData.') err += err1 post = { "date": datetime.datetime.now(), "name": "Тестирование 1004 сервиса", "comment": IS['comment'], "version": IS['version'], "data": { "Итого": time.time() - start }, "errors": err, "address": 'http://%s:%s%sSMEV/ResidencePermit.ashx' % (IS['adr'], IS['port'], IS['url']) } return post
def service_1003(req, IS, con, name='1003'): '''Получает ответ от 1003 сервиса, подставляет текущую дату в исходный файл. req: строка запроса (обязательный,в нем меняется время, наименование ИС, КОД, ОКТМО) numer: (обязательный, номер для образования имени) IS: обязательный, словарь. Наименование ИС, мнемоника, ОКТМО ответ сервера в строке или None в случае ошибки con: соединение к сервису ''' # проводим замены s = smev.change(req, IS) # сохранить запрос smev.write_file(s, name) # соединяется с веб-сервисом con = http.client.HTTPConnection(IS['adr'], IS['port']) # пытаемся отправить 1-ю часть и получить guid headers = { "Content-Type": "text/xml; charset=utf-8", "SOAPAction": "http://socit.ru/ManyChildren" } try: con.request("POST", IS['url'] + "SMEV/ManyChildren.ashx", s.encode('utf-8'), headers=headers) result = con.getresponse().read() result = result.decode('utf-8') except: Type, Value, Trace = sys.exc_info() print( "Не удалось обратится к методу Request (1-я часть запроса), возникли ошибки:" ) print("Тип:", Type, "Значение:", Value) print("Выполнение будет продолжено") result = None else: # проверим, нет ли ошибки в 1-й части smev.write_file(result, name) con.close() return result
def service_510(req, IS, name='510'): """Получает ответ от 510 сервиса req: строка запроса (обязательный,в нем меняется время, наименование ИС, КОД, ОКТМО) numer: (обязательный, номер для образования имени) IS: обязательный, словарь. Наименование ИС, мнемоника, ОКТМО ответ сервера в строке или None в случае ошибки """ # проводим замены s = smev.change(req, IS) # сохранить запрос smev.write_file(s, name) # соединяется с веб-сервисом con = http.client.HTTPConnection(IS['adr'], IS['port']) # пытаемся отправить 1-ю часть и получить ответ headers = { "Content-Type": "text/xml; charset=utf-8", "SOAPAction": "queryLongServicePension" } try: con.request("POST", IS['url'] + "/SMEV/GosPension256.ashx", s.encode('utf-8'), headers=headers) result = con.getresponse().read() result = result.decode('utf-8') except: Type, Value, Trace = sys.exc_info() print( "Не удалось обратится к методу Request (1-я часть запроса), возникли ошибки:" ) print("Тип:", Type, "Значение:", Value) print("Выполнение будет продолжено") result = None else: # проверим, нет ли ошибки в 1-й части smev.write_file(result, name) con.close() return result
def service_409(req, IS, name='409'): '''Получает ответ от 409 сервиса, подставляет текущую дату в исходный файл. req: строка запроса (обязательный,в нем меняется время, наименование ИС, КОД, ОКТМО) numer: (обязательный, номер для образования имени) IS: обязательный, словарь. Наименование ИС, мнемоника, ОКТМО ответ сервера в строке или None в случае ошибки ''' # проводим замены s = smev.change(req, IS) # сохранить запрос smev.write_file(s, name) # соединяется с веб-сервисом con = http.client.HTTPConnection(IS['adr'], IS['port']) # пытаемся отправить 1-ю часть и получить guid headers = {"Content-Type": "text/xml; charset=utf-8", "SOAPAction": "http://sum-soc-help.skmv.rstyle.com/SumSocHelpService/SumSocHelpRequestMessage"} try: con.request("POST", IS['url']+"SMEV/SocPayments256.ashx", s.encode('utf-8'), headers=headers) result = con.getresponse().read() result = result.decode('utf-8') smev.write_file(result, name) status = parseString(result).getElementsByTagName('smev:Status')[0].firstChild.nodeValue except: Type, Value, Trace = sys.exc_info() print("Не удалось обратится к методу Request (1-я часть запроса), возникли ошибки:") print("Тип:", Type, "Значение:", Value) print("Выполнение будет продолжено") result = None else: # проверим, нет ли ошибки в 1-й части if status == u"ACCEPT": # нашли что статус ACCEPT # получение guid # сохранить ответ for node in parseString(result).getElementsByTagName('smev:RequestIdRef'): guid = node.childNodes[0].nodeValue #guid = guid.encode('utf8') s = open(r"Шаблоны/409-Ping.xml", "r", encoding="utf8").read() # проводим замены s = smev.change(s, IS) # и меняем GUID s = s.replace(r"#RequestIdRef#", guid) s = s.replace(r"#OriginRequestIdRef#", guid) # сохранить запрос smev.write_file(s,name) # пытаемся отправить 2-ю часть headers = {"Content-Type": "text/xml; charset=utf-8", "SOAPAction": "http://sum-soc-help.skmv.rstyle.com/SumSocHelpService/SumSocHelpRequestDataMessage"} try: con.request("POST", IS['url']+"SMEV/SocPayments256.ashx", s.encode('utf-8'), headers=headers) result = con.getresponse().read() result = result.decode('utf-8') except: Type, Value, Trace = sys.exc_info() print("Не удалось обратится к методу Request (2-я часть запроса), возникли ошибки:") print ("Тип:", Type, "Значение:", Value) print ("Выполнение будет продолжено") result = None else: # сохранить ответ smev.write_file(result, name) # если не нашли статус ACCEPT, то сразу попадаем сюда con.close() return result
def service_409(req, IS, name='409'): '''Получает ответ от 409 сервиса, подставляет текущую дату в исходный файл. req: строка запроса (обязательный,в нем меняется время, наименование ИС, КОД, ОКТМО) numer: (обязательный, номер для образования имени) IS: обязательный, словарь. Наименование ИС, мнемоника, ОКТМО ответ сервера в строке или None в случае ошибки ''' # проводим замены s = smev.change(req, IS) # сохранить запрос smev.write_file(s, name) # соединяется с веб-сервисом con = http.client.HTTPConnection(IS['adr'], IS['port']) # пытаемся отправить 1-ю часть и получить guid headers = { "Content-Type": "text/xml; charset=utf-8", "SOAPAction": "http://sum-soc-help.skmv.rstyle.com/SumSocHelpService/SumSocHelpRequestMessage" } try: con.request("POST", IS['url'] + "SMEV/SocPayments256.ashx", s.encode('utf-8'), headers=headers) result = con.getresponse().read() result = result.decode('utf-8') smev.write_file(result, name) status = parseString(result).getElementsByTagName( 'smev:Status')[0].firstChild.nodeValue except: Type, Value, Trace = sys.exc_info() print( "Не удалось обратится к методу Request (1-я часть запроса), возникли ошибки:" ) print("Тип:", Type, "Значение:", Value) print("Выполнение будет продолжено") result = None else: # проверим, нет ли ошибки в 1-й части if status == u"ACCEPT": # нашли что статус ACCEPT # получение guid # сохранить ответ for node in parseString(result).getElementsByTagName( 'smev:RequestIdRef'): guid = node.childNodes[0].nodeValue #guid = guid.encode('utf8') s = open(r"Шаблоны/409-Ping.xml", "r", encoding="utf8").read() # проводим замены s = smev.change(s, IS) # и меняем GUID s = s.replace(r"#RequestIdRef#", guid) s = s.replace(r"#OriginRequestIdRef#", guid) # сохранить запрос smev.write_file(s, name) # пытаемся отправить 2-ю часть headers = { "Content-Type": "text/xml; charset=utf-8", "SOAPAction": "http://sum-soc-help.skmv.rstyle.com/SumSocHelpService/SumSocHelpRequestDataMessage" } try: con.request("POST", IS['url'] + "SMEV/SocPayments256.ashx", s.encode('utf-8'), headers=headers) result = con.getresponse().read() result = result.decode('utf-8') except: Type, Value, Trace = sys.exc_info() print( "Не удалось обратится к методу Request (2-я часть запроса), возникли ошибки:" ) print("Тип:", Type, "Значение:", Value) print("Выполнение будет продолжено") result = None else: # сохранить ответ smev.write_file(result, name) # если не нашли статус ACCEPT, то сразу попадаем сюда con.close() return result
def test_1005(IS): err = 0 terr = 0 print("Получение документации 1005-сервиса") print("*******************************************") # Загрузка настроек из конфигурационного файла Parents, Errors = readConfig("config_1005.ini") if Errors == 0: print("Загрузили конфигурационный файл") else: print("При загрузке конфигурационного файла возникли ошибки") exit(1) start = time.time() # получение WSDL url = '/Socportal/SMEV/Transport.ashx' #print ("Пытаемся получить WSDL по адресу:",\ # 'http://%s:%s%s?wsdl' % (IS['adr'], IS['port'], url)) errMsg = smev.get_wsdl(IS, url) if errMsg: print(errMsg) terr += 1 # Перебираем всех тестовых родителей shablon = open('Шаблоны/Request_1005.xml', mode='r', encoding='utf-8').read() for parent in Parents: req = smev.change(shablon, parent) req = smev.change(req, IS) print("Отправляем запрос на гражданина: %s (%s)" % (parent['famil'], parent['test'])) # возвращает XML от сервера result = service_1005(req, IS, parent['test']) # пытаемся напечатать ответ в понятном виде if result: if parent['md5']: err = smev.check(result, parent['test'], parent['md5']) if err > 0: print( 'Ошибка!!! Не совпадает контрольная суммму блока smev:MessageData.' ) else: print('****************************') print_1005(result) print('****************************') else: print("ОШИБКА! Ответ не получен") err = 1 terr += err post = { "date": datetime.datetime.now(), "name": "Тестирование 1005 сервиса", "comment": IS['comment'], "version": IS['version'], "data": { "Итого": time.time() - start }, "errors": terr, "address": 'http://%s:%s%sSMEV/Transport.ashx' % (IS['adr'], IS['port'], IS['url']) } print("Все запросы и ответы сохранены в папке Результаты") return post