From ee14a2d318f9a839b9f26a016c1e897856df962c Mon Sep 17 00:00:00 2001 From: Samuel Pierri Cabral Date: Thu, 9 Oct 2025 17:04:25 +0100 Subject: [PATCH 1/9] fix setup and version 1.4 --- .gitignore | 1 + SoapLibrary/version.py | 2 +- Tests/keyword_tests.robot | 2 +- pyproject.toml | 23 +++++++++++++++++++ robotframework_soaplibrary.egg-info/PKG-INFO | 20 ++++++++++++---- .../SOURCES.txt | 1 + setup.py | 11 ++++----- 7 files changed, 47 insertions(+), 13 deletions(-) create mode 100644 pyproject.toml diff --git a/.gitignore b/.gitignore index e2c357b..68351dc 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,4 @@ response_test.xml report.html output.xml log.html +venv/ diff --git a/SoapLibrary/version.py b/SoapLibrary/version.py index 631932c..3610d01 100644 --- a/SoapLibrary/version.py +++ b/SoapLibrary/version.py @@ -1 +1 @@ -VERSION = '1.3' +VERSION = '1.4' diff --git a/Tests/keyword_tests.robot b/Tests/keyword_tests.robot index f7d37c7..53356c0 100644 --- a/Tests/keyword_tests.robot +++ b/Tests/keyword_tests.robot @@ -104,7 +104,7 @@ Test Read Tags With Index Create Soap Client ${wsdl_correios} ${response} Call SOAP Method With XML ${requests_dir}${/}busca_servicos.xml ${codigo} Get Data From XML By Tag ${response} codigo index=13 - Should Be Equal As Integers ${codigo} 032 + Should Be Equal As Integers ${codigo} 29 Test Response To Dict [Tags] correios diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..dd70e50 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,23 @@ +[build-system] +requires = ["setuptools", "wheel"] +build-backend = "setuptools.build_meta" + +[project] +name = "robotframework-soaplibrary2" +version = "1.4.3" +description = "SOAP Library for Robot Framework" +readme = "README.md" +requires-python = ">=3.7" + +dependencies = [ + "robotframework", + "zeep", + "requests", + "urllib3", + "setuptools" +] + +[project.optional-dependencies] + +[project.urls] +Homepage = "https://github.com/MarketSquare/Robot-Framework-SOAP-Library" diff --git a/robotframework_soaplibrary.egg-info/PKG-INFO b/robotframework_soaplibrary.egg-info/PKG-INFO index 3ab71c5..90ae12e 100644 --- a/robotframework_soaplibrary.egg-info/PKG-INFO +++ b/robotframework_soaplibrary.egg-info/PKG-INFO @@ -1,13 +1,23 @@ -Metadata-Version: 2.1 +Metadata-Version: 2.4 Name: robotframework-soaplibrary -Version: 1.3 +Version: 1.4 Summary: SOAP Library for Robot Framework -Home-page: https://github.com/Altran-PT-GDC/Robot-Framework-SOAP-Library +Home-page: https://github.com/MarketSquare/Robot-Framework-SOAP-Library Author: Altran Portugal Author-email: samuca@gmail.com License: MIT License -Platform: UNKNOWN License-File: LICENSE.md +Requires-Dist: robotframework +Requires-Dist: zeep +Requires-Dist: requests +Requires-Dist: urllib3 +Dynamic: author +Dynamic: author-email +Dynamic: description +Dynamic: home-page +Dynamic: license +Dynamic: license-file +Dynamic: requires-dist +Dynamic: summary Test library for Robot Framework to create automated test like using SOAPUI - diff --git a/robotframework_soaplibrary.egg-info/SOURCES.txt b/robotframework_soaplibrary.egg-info/SOURCES.txt index a520565..128ff9f 100644 --- a/robotframework_soaplibrary.egg-info/SOURCES.txt +++ b/robotframework_soaplibrary.egg-info/SOURCES.txt @@ -1,5 +1,6 @@ LICENSE.md README.md +pyproject.toml setup.py SoapLibrary/SoapLibrary.py SoapLibrary/__init__.py diff --git a/setup.py b/setup.py index c79eda0..fdbea97 100644 --- a/setup.py +++ b/setup.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- from os.path import abspath, dirname, join try: @@ -6,21 +5,21 @@ except ImportError as error: from distutils.core import setup - +VERSION = None version_file = join(dirname(abspath(__file__)), 'SoapLibrary', 'version.py') with open(version_file) as file: code = compile(file.read(), version_file, 'exec') exec(code) -setup(name = 'robotframework-soaplibrary', - version = '1.3', +setup(name = 'robotframework-soaplibrary2', + version = VERSION, description = 'SOAP Library for Robot Framework', long_description = 'Test library for Robot Framework to create automated test like using SOAPUI', author = 'Altran Portugal', author_email = 'samuca@gmail.com', license = 'MIT License', - url = 'https://github.com/Altran-PT-GDC/Robot-Framework-SOAP-Library', + url = 'https://github.com/MarketSquare/Robot-Framework-SOAP-Library', packages = ['SoapLibrary'], - install_requires = ['robotframework', 'zeep', 'requests', 'urllib3'] + install_requires = ['robotframework', 'zeep', 'requests', 'urllib3', 'setuptools'] ) From 44104ed29d193fdc9a52716ca331bf23b7fe2e7c Mon Sep 17 00:00:00 2001 From: Samuel Pierri Cabral Date: Thu, 9 Oct 2025 17:44:44 +0100 Subject: [PATCH 2/9] update strings to use python format --- SoapLibrary/SoapLibrary.py | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/SoapLibrary/SoapLibrary.py b/SoapLibrary/SoapLibrary.py index f0046e0..077da59 100644 --- a/SoapLibrary/SoapLibrary.py +++ b/SoapLibrary/SoapLibrary.py @@ -64,10 +64,10 @@ def create_soap_client(self, url, ssl_verify=True, client_cert=None, auth=None, session.cert = client_cert session.auth = HTTPBasicAuth(*auth) if auth else None self.client = Client(self.url, transport=Transport(session=session)) - logger.info('Connected to: %s' % self.client.wsdl.location) + logger.info(f'Connected to: {self.client.wsdl.location}') info = self.client.service.__dict__ operations = info["_operations"] - logger.info('Available operations: %s' % list(operations)) + logger.info(f'Available operations: {list(operations)}') if use_binding_address: self.url = self.client.service._binding_options['address'] @@ -124,10 +124,10 @@ def get_data_from_xml_tag(self, xml, tag, index=1): if isinstance(data_list, (float, int)): return int(data_list) if len(data_list) == 0: - logger.warn('The search "%s" did not return any result! Please confirm the tag!' % xpath) + logger.warn(f'The search "{xpath}" did not return any result! Please confirm the tag!') elif len(data_list) > 1: - logger.debug('The tag you entered found %s items, returning the text in the index ' - 'number %s, if you want a different index inform the argument index=N' % (len(data_list), index)) + logger.debug(f'The tag you entered found {len(data_list)} items, returning the text in the index ' + f'number {index}, if you want a different index inform the argument index=N') return data_list[new_index].text @keyword("Edit XML Request") @@ -160,11 +160,11 @@ def edit_xml(self, xml_file_path, new_values_dict, edited_request_name, repeated raise Exception("new_values_dict argument must be a dictionary") for key, value in new_values_dict.items(): if len(xml.xpath(self._replace_xpath_by_local_name(key))) == 0: - logger.warn('Tag "%s" not found' % key) + logger.warn(f'Tag "{key}" not found') continue xml_xpath = self._replace_xpath_by_local_name(key) - count = int(xml.xpath(("count(%s)" % xml_xpath))) - logger.debug("Found %s tags with xpath %s" % (str(count), xml_xpath)) + count = int(xml.xpath(f"count({xml_xpath})")) + logger.debug(f"Found {(str(count))} tags with xpath {xml_xpath}") if repeated_tags == 'All' or count < 2: for i in range(count): xml.xpath(xml_xpath)[i].text = value @@ -221,8 +221,8 @@ def convert_response_dict(self, xml_etree): if type(result[key]) is list: result[key].append(value) else: - tempvalue = result[key].copy() - result[key] = [tempvalue, value] + temp_value = result[key].copy() + result[key] = [temp_value, value] else: result[key] = value return result @@ -400,10 +400,10 @@ def _check_and_print_response(self, response, etree_response, status): :param etree_response: response object in etree format. :param status: if is not None, then don“t raise error. """ - logger.debug('URL: %s' % response.url) + logger.debug(f'URL: {response.url}') logger.debug(etree.tostring(etree_response, pretty_print=True, encoding='unicode')) if status is None and response.status_code != 200: - raise AssertionError('Request Error! Status Code: %s! Reason: %s' % (response.status_code, response.reason)) + raise AssertionError(f'Request Error! Status Code: {response.status_code}! Reason: {response.reason}') self._print_request_info(etree_response) def _save_response_object(self, response): @@ -413,7 +413,7 @@ def _save_response_object(self, response): :param response, zeep response object. """ - logger.info('Status code: %s' % response.status_code) + logger.info(f'Status code: {response.status_code}') self.response_obj = response @staticmethod @@ -446,9 +446,9 @@ def _save_to_file(save_folder, file_name, text): :param save_folder: folder to save the new xml file. :param file_name: name of the new file. :param text: file text. - :return new file path. + :return: new file path. """ - new_file_name = "%s.xml" % file_name + new_file_name = f"{file_name}.xml" new_file_path = os.path.join(save_folder, new_file_name) request_file = open(new_file_path, 'wb') request_file.write(text) From 20efed88d3f1c661f6b5a2ebbd262e3c9bf7de22 Mon Sep 17 00:00:00 2001 From: Samuel Pierri Cabral Date: Tue, 9 Dec 2025 13:19:48 +0000 Subject: [PATCH 3/9] Update pyproject.toml --- dist/robotframework_soaplibrary-1.4.tar.gz | Bin 0 -> 10399 bytes pyproject.toml | 4 +- robotframework_soaplibrary.egg-info/PKG-INFO | 71 ++++++++++++++++-- .../requires.txt | 1 + setup.py | 2 +- 5 files changed, 69 insertions(+), 9 deletions(-) create mode 100644 dist/robotframework_soaplibrary-1.4.tar.gz diff --git a/dist/robotframework_soaplibrary-1.4.tar.gz b/dist/robotframework_soaplibrary-1.4.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..c667f9dde2758221b743dde4c2d894b958fa1970 GIT binary patch literal 10399 zcmaKyRZyKz@TPGmxLY8&99)6~clQJcaBwF$!4B>Y!3pl}?(PyaxJz(?ANV%E|5okI z*6vi-Ty(u%Q#BX;PW3ZXQ79-bL;}`ufU~2CqpO88*xua3(b?9>#S#3?&f3Ho?EIaL z6T|~@1v|r>`+9q<@!ePfU4kQ9u<9NxOe`8$J-8d?Uq^Is&jp*~_8Zs!Bz@4Np{>i4 zW0N0JPx7gFLA_w;;D(P!ph`R!lz(WUQzg@U&q0jg{~Zi-jM;VlfWG&t=#aMlau_A7 zd~Nrw&Kae!Z#k9l zhW!OEmckbP4CHmM&6GdQYdCPLb#pD@l2mbx)H}3gN$=TkuVD%p7#NtkrP|bgsag_m zXzGB#bmlgBqd->tIDwwW0)XKPxED_WE(xJP#TDQ_2e*~<7 zRu8_j6ZG4FTVQ+J_!rcX9}BD7`uscy&UwY|T)cbfjq(&SW%35OKGFsfv-R*U9(_t0 zH3i*MZD%s3;B~SWK6k8ojbjL1VOWxEAE95cv2L{(gnjvx=@J*WY=@Ks@36GGu$R@Q z$(K&H8NK{vn`_`p1KooU<900kfHSM*Fa}?Mjk`iTZyG%LRyGoU=m>So7{-ik{lxT~g{#Ey9!=1h*!n-9-%-CO)ujA_Ve&R>B z6K?k|z|FzaA4Q~(NV1lxJ+-$-XUAtm_cL#+^4WK9Zk)%MVP`(Inx{SO0_P9!>mcqv z&(DRB`#_PPK+7YJv=@#-*wcfL1Eh47evaX@hIdFK>^nzu4R6-KP3p7C$#>ueBkz+a zRqY3NC!W?bs-90Gq_t7YK~cA0ENlVTR?F9hBlyzdhjI`1GRda+VK31>EIyy_u3nLD z=gF~#lJH33G(w+x9?fSV*Efk>!lEK4;=2u$+wOnQ8W~Ol-6?V??~E2#$L1;uh(ws( z-Wlh9Pg8wA>gTsQz*BjR@+Q=MmXiZkjGdVQAzwAT!=x~fF^61WdAqsu9AhQW&mbSw zHO1$Iycs=0-d>=h zQw$xdKk*wnW&!rMCkgmDkGJio9%(>SVDu4kpNZTN@&;)Cg-{X~;}HK=&GiesSOVMo zI+nO1!RHSo21#lnji@k~b!Zgy~L!>sy z?alJCEPoc^A$wNG1SJ1J6t`gs|RuT()%S>M{>32;PYG&WTBD)lL38L zU$`Zic3rL<$evF+8@y;A#tk=>&QHv*?V0iq-)r@ds%<3`lA26eE9JvTq*jyya~l(d zu{u7>Clx1zT99YJ>&8`smWT)khS#dW&yM9_CDzlAs z&mIjMC{`pEEgUN`2EV{2HFyf0Z~2PPe;`EbgUqbk5}U2PU_!YN1)uzprp2c|gYNG7 z9n@s0i$x`1Ex9g17`Yv~Fa38*-?A=~yUo`=j-0dN8T(AcZVcfLPp#Bf!6;bU(F$O~ z^9{W5tlQrZSS#;{kksT#2`>B3&-z!GHGMfUVSe|?X30T4vB+c4Lkcf3uStB z;l^K}G>ki{I|?H^d;ac@ce@@YV>Jan+Qph}fK`8pI~jgp%hc9mi2gl=?nF8=A?5cj z2iOX0@S#3SF5%rKSyYknX}nyp#xN-8=z4F&ZZrsHI4n+7%0>WgPnLSMnDwYv6BB`l zb}8aVD6hdTj1Zqs^#aZgVTx#Ro(gZB=^C7MblJ+w>=TDxD(IWlsUIlvG_=PP*o$%e z%^Bb0gEDf?5E!9V@CD=d!aDEjjF=heY4XG4-FBhq<3hZP7^FwezyDg+*swQC09G5L zIISahcV_8qKJ8$En79FFRJ-VF$%PUuQ3+Oz2T$8d(S%yVC@dj3T(qD4gV|(#s^n)I z$6sP5co&FE3mGu-bqsz9K~qOrU-LW!e(L7JPhvV0NX~gxOngCtLn@xGoO5Vii#aqb zShVYuq0bj*7aG_pBWxu_N%Tk=<4vRgz1>!ffrF_&i*bJATB=;i!i$(gdPPG2g8iD{ z@<4B9aYU4>hp9RyDw6(f%M$5ZZQV?l$MIcZ3ana_n_z|EH0Dv&jA2A*ZR$eeHyt3U z2Hcu?Cgt{}f;L?*5wDxz<7={qkThtfm70bmspVl`8jVcjIHqpeNc+PrFUAN_}=%hS#lQx1H1(4ND{?c57 zcM}5CdANL>XyEpJySqS&$2MIxXGi|dvhOQI?^O%Cj;lB%H0hP!LpR z9GPOz-xo@#?Ltyqx;h(GSOdrL)^8_#C4lABN0LXT7{!FJWB6R*a1%jhk+6x7E<3z% z3VjV`9|{#nufbZnFgv&ou)3THET+cXiqQ7wxK-`ytA+T5#s-?@92fJV#-22ltF?!I zx@a?ZuC1qteMhkK`P~bf&o5u}E>2^VAbSHgeeRJv&$e#ZHa&xvXyg*9D4Q>Qbq2qD z<)l)jc_;5~=e8^V`M&`dL)VdPjVik=ySHp3a`nU~t%di;3Srue7|*Z$Z(EIy_`Pnr zeOlfcPqgdzcxzX_i*&0vKWqD*8g3`%tbx^StE&ksPanTI_^Tfin^%dLMi1=XKRSI9 zi{mx(Ko;Cj$uTl1ricaVi%0j3OA#UtkNQO2Y>eLz1%>Z0M-u?*o4vL@qXKf8nXQA| zvJ^>6#&*z9E@;`Lac33eu-}K^WXN;);9O;meeitir_DrhQ+Fkqu zA%O0%a0n|Pq`J2b3eyr>U*HjHPGm|qT^Rp^} zc6j_J#)DF|& zQHnM&REL771+QS@rw~0q)uQWCPQJ^QsS6Ql>rDj0if9HFUQ{Nt!<`ig%yyey1Uy+; z8&B?{$wcKYwJ52Gx39bNZ#>3F_vq~DSo+Z~FoGAD?iAirZ$+2-ukZG;=l1$D47K%f~`&gX1|yozKx=L9&_IsyoYh;ugU?n zMvyf%C>w0&1VAvf}W$oU2*Z$K-NFepc#u;)&OJ2{M_3QsB%5;lP# z^$`j(3*j0>z+C~A`da4-BK@7pQ@7w%o3^00AfY_m@P%!A;P7OrCW9p-2^@mQEJ4J6ZQR znCA0Mxp3sKaYsII3d3huNi)esfua;Cy9|C<{IBnM37z$^Q`|$Uy|ojJnH`^O5kJhnE1HIPbmL<%`mv>Ko%((q?!)J&!asIeR-we`us)3sP0OWiTbB#vz zMZyAOH$0?q))Tuo!D`8>XBEHp*G7lBu;(x)V(-o*#%e!Gw5IWWG9TKydRoczPl?+8 z{6}qKNi)|!0(yv?70g;iQutZP`=U5x%c;41xN#_mo|AvtBr8rjSt?@E!=U<#5ito^ z&zEw%YyNAx16v9X{eH>A_Kky1JpD2;I z<>m2Hbd13b!avw2eE6lCOFN0|pg0%EM9R63;Wy%AJTAi z=+Yvnm1X@Cc|_tT#PaPTXZ-elMvb7e8DOQ;exo-&6~GUt)+_xoVEn+DHHhL%9;m$+ zAN@%1g~oKDQ&VI_YGz5YxJ6%|s zpGs@;=M^LuKfL@#`OIQ5?0HPYV7)eOne|3=l(k?M*vz@jqRtK_4Lnym$-zp@l2_$- z)(hK;MmXrGN9I}5Xk{83qrJ^*WOj|{r?yf^lKwqZmlq}c*HMF_(I-;WmA;eoM_I$^ zf;(oGhl*N7(Sqbh-EB<+8q{Bhu{RNJ9hK>U)VyD^Msmk?S?}9+ln*PR0pFlnNaBuM zJAQemSH>UvFe&TMGs!;vv^!K{bHu4nlr7JnIA^64t=0KNN>5c|fr~}{WF_I^>ZxXT zf%bO@?#b_> z#WO4zXP439)jP08BPzrbgFApb1?Exii`;~gNKV*EjDVt7`M?ByxvzfJR8KL+a5^JYPf`&`4zmN)~~ldYNRNt9Aw_GEZ|D2W?ot)Xntm)bwx z(7|$9zKNeo4y)n%)#Jh3d@t_EAN$}OsuyHL$#8dP%|9>ciVI?G?*$|ZQ4^r|V73MP8Lu|xcE zbNk;1$U)Q&TpnSn#MKS2_leGm3S&LUOvY~TN;s|+gaHABZ| zLUx0?jEd%Y)x1r*jNX^Qur71CsyL&+ryBEXyg|s=YH)uiQfJC`ri%43w6Y_qMvkf6 zK3wj695?cvT7ZmXJ#BlOi~j+<^DJI&V_q}rO$&9B#DzkZwqQwNZL+3l+2P1;e#JA5 z@zPFe`JX?J>ilea*mBC-nC&T7bqLjeYqztePD3Nc8=j55E+fmaa6=QDuu~-1@qeP+ z5UItM*=DX+;4z^zOkI4@^HVC-t%FC&u2AXj_{;ajv8LeME${E^B(A89%OhpRCT>JD zX1Q9ZSr>Bp*LaKf6tD4UbC2@L(WBvdk_suZ?b4pzZdTAu5V$AJBQX?7eCjMnL4Wuf zR2s*sZqV!zmF_bE9is|QXUfOepqq>{W`jC6GI|1SF08br$xvrvN#qj8H67u+zQG0o##nTgNi)1m7u1nty)%uM=I<-B`8(Yw}MUTcUP!>pRC1f9kPv z5`Sa0w7J3!ehpBF<4@ObMpgJO^YBEN(b_Ay<3#_ch^;JeShDnD#z#DLTurp?=DP8$ zxQ15#L-ogR?LU~2?w&(lKZH%dI`VS5zB_G=C+t#WX+oG8r6igs0d`xC+e{=PErWnZaoVJ`PscY&bVV&iKtrh!I4n zTDC1Zm_^kl#2O+H7X~l-yh1J3F^KffHKL4`Dt5(pEQ5WfwF1x%Ho6IO^pItZt7McK z{2#LDmt2F&#{ru0zw*F)BYBeHMB-YvG8fgYo3?{m!5d#cG>fIA#zHsna8Dk@Q@5E7|=X%U>SU zxHz$Z=IyuD)czuOk78HZH-ClX{y7*3qx)#K%qKFjzJWi2H_MFyeyzlk<4snI$D_qI zZAY-;j0zGU3p%sAbh0b07Bzg@7}Mw@GR@Yk!KLhZFunl%CmpM4-+NNsJLWKe;&VLtz?!WtnN6fBC8r~=nBArrw zsc(8W3rBYb(!(93%h80-AYnp3LLe$W;@Q@iFWIAj% zipO6y%2p}G7?_`bh0QXtz)-c|0W-L2L^BAZ8gH8n0-`=!{17YOEq_Rl<7nZ{B}(-g zM%F^H65_wNo__zn^RiLo`?eWk+SHQSqM&`d(Ijeduf5NFj38OWm=27+tQ*bCUb-J;T^b9t>Z{9I37N9pga^`k1^xR>j$!s zY<|T1DC%H3xcp32Ase}hI|P4tofu<2WK6(9r*_ZqapsnJ_MrEz5hv}qzXMjY-8(Z> zk({TYj@KlAH%likpJ~nJk}&YwL_Jb@$qE&h%R1IIPDt6CTCY1FQB->nHg^LFu9d&dlN3+i zKhI5T2&Py$)F5>&!qlFS8Z-XBzC~D2jNZ|f!IsaA^|75eupGUzt2$7Zt**-ebB17v z5D{lx!J?7c_$(3|{qImjS5YsIwLGTrzA~&*9MXMqWQe~MlgtO~fh~^dPZ$R}Vh*P% z4`pAHwG0l>Dg~F4oQ6=kRCr5tjRu(sr5~wpK7vUQppG69Av^c(9&;jM>g?u6sqMQg zkL&boyeGd_ODi1S1tPZYczy27`jZsm#eEdJZk_A3FlcD1*J}~1jL$DWg1qJcTEhtN zm=`SnIhJ83SqxK!H1GBE+nFUSijR=VxA+n5EOr02a&cd`w=DqE%#%1>BXd}v*&_4e zZ`2^!Z~h3(xQO*O7Qm^-ECu+Z1ZEDj)v{Sz&sadk0hKGt`gV=N(O)ca`RRhx*`So`j^c%Juligu>(&W0VZyjCaA| zFk3u5_E+pQIzHOkD@x}F#{hGFRp(4|b8S`GB~VT-uIAFp31uENNynIhWm?Pmeb~3~}Tv ztH=PeAh@uR^~0#mN0Jk=IUZEurXdiog`}WVU(tcg-t`YFsg@hvo*Vi#f^-c?OkGzM z%LRUfbajq>z`q_|MF0CPAz}|bMA1MxY>c?W)gT)eIgOcOXJIUO`G82QQLw*1cRMj_ zGlJ%+nMqZhheUhL{MSv`@exC#U`udk$aP*%drA_m6P%4iLInJ*Bnv$(L1kK|ler}7 z>u>{{T5RH5yHu=lvAo~xI{k+Oou@|i0G&lDCm+o5)G}tH=2|!Fn34Wij3P4Ol)RhQ z1!>*xJF?3Zj|ov9(Kl*bj{T{q)HcB_{^5UZtrsd<`qHD-R#(K;nc@kKIv#-b=lq+( zO-ry&L)fMvuXs7YZ<|jWYik?q|C5*!0eFQeul>S$Hoe|#8@gJyo{O7WAfC05{~@04 zE*_380>GWE@b13)9ew$gzs?33tOohRAR3q?%HWYj#Q5LqfO2iJ=p5|HDtEr{Z^>tYSy7yjrNd z)X9U=hGoWjk#(`R7-u2rRn-0>5t0{9=$ zUx5nY@mJW^A}zVD$j*q|c`#d9iq0Sx=y>i^pheL`W$}A=ANMnO5ql$g6d!e(M zMMOg-jv%T?ZY{J&Rj|2BCl0UvB0`Ns<866L2X>Bd4f{)4RdNt>c65-F7#^|JkGheUBjxPapg_6CzL z^FD+VXc>oe{-fTx8=!p%HE_G%gOB#03*(RkaI77?s=go(qW|W=UJHQ&q^dsDDu~Y= z8m#bdV?QO{h;BrkfXgHuY5@I-Y8*Jw+uW^2zUcSsg>KmZm(6=GkOw_a;IePWj~eJ1 zcHuSr(p>h`2)ZrC|JuE1u4|ryTw%W5-fUFea5I(V(g7`|MT?FZ(_i1&FjwHq?%vsS zE-+yJI+k}^Ok1!zKGs*v6jWt^#x5Fc$8j}I$Gy25ZQaP@R9;C{Y!Wg-XYhcxh~Xv6 zP~-L7&nkO9H;6{<_nOyHK?UbUKk^}=mAg*LW$4))cgXo`VLlyIcUZ}CaL+&m_JL}M zRS`cY&fjkZ4aG|p7BB)=FaJ2E@vWxNZb4tZW}hL+ramPG(8VRZ`5xB_2bD)pK?D=^ zSyb-r^1|W(QV|arNxxAQ?*qR|p8Jv*yw6`HP#O0jrni>aGZv&sxqKHq02US&{|v-4 zZXf8QTmd?&HV*mideVT9SKYtBaueVW5ZxQ~{ky9FA+rNQnUI=Sk8knYKrVXo!|z^P zw3ka3;hJ8ZfsTO2oZ#2R|IKA(GIRLWY=w##A?UYQx>1OmQ_~I&zuZUr=Vk}hXFhfJ z1T<*&uNi->8HlwrFf}KtCaSaurSO}5?5{n0w<*({K@7>+VXrhPaiwMj#oVKXA?f}H zSS1uSr4rnUSJQ>)4oX4FBA^OMp&?SSrj}ywy|ZMMDpU`jYOt_=SoVFKx1}VH3BfFb z=Za(bKc+gTGnJAcV|y6XXvlq1M}n^WISAHKS5$OROWy8Ab!oxG7>dgr5T{$C(RaZ{sSCfuMs0DJ_dX)Zib z>^ArVn=?tKNPK5Cq~GK8Hz19>8}TtNe$9Ex!GF6)|D(>f$H}hi2zIxB!nY0|%Uf%X zjMnBqZuYi(SQeBi*{VC z>-gN?N}}IPAjT9EgHQtQwOHAbNe;xhuv2yX!zKr=H{L=OUN*p~7oroCSC1&^;e;Mr zL_>4$uO`?2UO=n*&dzi@YmjH2mDjUnNxE(A7rh;i*TS2`V4Y>voyQK0 z0(c&Q@ZPlFex*8JKBiVyh-ie9FUobnDh=^TSqgiId^bh?xg6sqP++QImyp+>+1}la zWI#xKEGY}aR%M=MUg6n2tl2)(_2}PvFbR(y$H%Y^r}L|SvPDOXEi(U_DFLM@`m10t zOH++l;U-wLkHQ^yke8PKUHIQgm4F#sae&11NK|(LTI~6REHiFY5!O}F#pd3obXAyG z#tWNhq6(!!&Ybz!k#D+Q@EuXGcYXVwT+X};^Rf*F7GBeG$%=pNT*jql&W6wM1KwP2 zYWB{R7PC(~!HhFf&C zs?gnwQPd4_aOsO%sX2_6efD(ujbNN^KJ^)06K&Qakc=GLdsdR9e*le@=W3#5NR~}{ z%ynS=@@xMlnv5oq^SigIVPP%x5BMF>O~#pY|7XUr+>N{ID_1RuKsKC$GRe6KRe zU-mdVLsxdI|3Cb(@FIGC>Lz_bWblsoZ=V^+y+DcuK1Q#=m7$&*A zPLJ>kpYfDH6ZdWs-B$p?TTefrD+~m^LI!S^gZ4Jnur`r<*x&YY+j4GzbAEmA5a7~Q zxGtDk8jM$DwxAl}BmV6CRihvP?@;+B$yrT|$pc=UNwl)nmCDiOd9yn*nLt>1->iY8s7A*+7<1KIv_Ib1IwO~Wp77* zX#WZR^8^6)#;D2HFZFdxSZ)M3yKITNrF!#!V+UW!F<}rgjcvzkkYi|k3;j>q6Auh& zjsij*T#i40s;)+;=n6X&Fgj2dz8rA7t6ZeNrrf@;A?W%(z6fKY;5lWQCxJpD%&XsxZbF$pS(yjw%`-m=^qn=+a8V8}@ zu9q;PX$gLgazyIMMX;8w24CMFZZ1plZaH^d0%GFB`pFQwFz-Vs7OxmGTp8>!GwnPLa~jfE=ts; zNtxZIDFGES#m|_cvnb)ArVjn&Mk-A$4@TaM1n z&`j4NEPO9Ad&J;pqlZ0<@Qwbl!xBEn67D!FTc@;-T|b1T*&e>rim{N1>_)T9Se$@7 zN8RIyZ|2iFc`ep;-y6}%82fOvtXuPIsOl?XB9Pa#5{E$s?gV^N6`dbRXS&BTv7Mdb XOt0}(|DPc>10Zh{Tx!D*!@~S8=bwdx literal 0 HcmV?d00001 diff --git a/pyproject.toml b/pyproject.toml index dd70e50..768912a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -3,8 +3,8 @@ requires = ["setuptools", "wheel"] build-backend = "setuptools.build_meta" [project] -name = "robotframework-soaplibrary2" -version = "1.4.3" +name = "robotframework-soaplibrary" +version = "1.4" description = "SOAP Library for Robot Framework" readme = "README.md" requires-python = ">=3.7" diff --git a/robotframework_soaplibrary.egg-info/PKG-INFO b/robotframework_soaplibrary.egg-info/PKG-INFO index 90ae12e..aef5770 100644 --- a/robotframework_soaplibrary.egg-info/PKG-INFO +++ b/robotframework_soaplibrary.egg-info/PKG-INFO @@ -5,19 +5,78 @@ Summary: SOAP Library for Robot Framework Home-page: https://github.com/MarketSquare/Robot-Framework-SOAP-Library Author: Altran Portugal Author-email: samuca@gmail.com -License: MIT License +Project-URL: Homepage, https://github.com/MarketSquare/Robot-Framework-SOAP-Library +Requires-Python: >=3.7 +Description-Content-Type: text/markdown License-File: LICENSE.md Requires-Dist: robotframework Requires-Dist: zeep Requires-Dist: requests Requires-Dist: urllib3 +Requires-Dist: setuptools Dynamic: author Dynamic: author-email -Dynamic: description Dynamic: home-page -Dynamic: license Dynamic: license-file -Dynamic: requires-dist -Dynamic: summary -Test library for Robot Framework to create automated test like using SOAPUI +[![PyPi downloads](https://img.shields.io/pypi/dm/robotframework-soaplibrary.svg)](https://pypi.org/project/robotframework-soaplibrary) +[![Total downloads](https://static.pepy.tech/personalized-badge/robotframework-soaplibrary?period=total&units=international_system&left_color=lightgrey&right_color=yellow&left_text=Total)](https://pypi.org/project/robotframework-soaplibrary) +[![Latest Version](https://img.shields.io/pypi/v/robotframework-soaplibrary.svg)](https://pypi.org/project/robotframework-soaplibrary) +[![tests](https://github.com/MarketSquare/Robot-Framework-SOAP-Library/actions/workflows/python-app.yml/badge.svg?branch=master)](https://github.com/MarketSquare/Robot-Framework-SOAP-Library/actions/workflows/python-app.yml) + + +# Robot-Framework-SOAP-Library +SOAP Library for Robot Framework + +## Compatibility +- _Python 3.7 +_ +- _Zeep 4.2.1 +_ + +## Introduction +The SoapLibrary was created for those who want to use the Robot Framework as if they were using SoapUI, just send the request XML and get the response XML. + +![alt text](https://github.com/MarketSquare/Robot-Framework-SOAP-Library/blob/master/Doc/img_SoapUI.png) + +![alt text](https://github.com/MarketSquare/Robot-Framework-SOAP-Library/blob/master/Doc/img2_SoapLibrary.png) + +## Instalation +For the first time installation: +```commandline +pip install robotframework-soaplibrary +``` +Or you can upgrade with: +```commandline +pip install --upgrade robotframework-soaplibrary +``` + +## Example + +```RobotFramework + *** Settings *** + Library SoapLibrary + Library OperatingSystem + + *** Test Cases *** + Example + Create Soap Client http://endpoint.com/example.asmx?wsdl + ${response} Call SOAP Method With XML ${CURDIR}/request.xml + ${text} Get Data From XML By Tag ${response} tag_name + Log ${text} + Save XML To File ${response} ${CURDIR} response_test +``` + +## Example with certificate + +You can see [here](https://michaelhallik.github.io/blog/2022/04/10/Using-OpenSSL-to-provide-the-RF-SoapLibrary-with-a-TLS-client-certificate) an example of how to use OPENSSL to access a webservice with TLS certificate. (Thanks Michael Hallik) + +## Keyword Documentation + +You can find the keywords documentation [here](https://raw.githack.com/MarketSquare/Robot-Framework-SOAP-Library/master/Doc/SoapLibrary.html) + +## Authors +Initial development was sponsored by [Capgemini Engineering](https://www.capgemini.com/about-us/who-we-are/our-brands/capgemini-engineering/) + - **Samuel Cabral** + - **Joao Gomes** + +## License +This project is licensed under the MIT License - see the [LICENSE.md](https://github.com/MarketSquare/Robot-Framework-SOAP-Library/blob/master/LICENSE.md) file for details. diff --git a/robotframework_soaplibrary.egg-info/requires.txt b/robotframework_soaplibrary.egg-info/requires.txt index 0d38d18..679eb96 100644 --- a/robotframework_soaplibrary.egg-info/requires.txt +++ b/robotframework_soaplibrary.egg-info/requires.txt @@ -2,3 +2,4 @@ robotframework zeep requests urllib3 +setuptools diff --git a/setup.py b/setup.py index fdbea97..5ab2e0a 100644 --- a/setup.py +++ b/setup.py @@ -12,7 +12,7 @@ code = compile(file.read(), version_file, 'exec') exec(code) -setup(name = 'robotframework-soaplibrary2', +setup(name = 'robotframework-soaplibrary', version = VERSION, description = 'SOAP Library for Robot Framework', long_description = 'Test library for Robot Framework to create automated test like using SOAPUI', From 1f858e29c9cbe39caf53b7fc95e24487af5777a6 Mon Sep 17 00:00:00 2001 From: Samuel Pierri Cabral Date: Tue, 9 Dec 2025 13:47:05 +0000 Subject: [PATCH 4/9] update github actions version --- .github/workflows/python-app.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/python-app.yml b/.github/workflows/python-app.yml index f57b560..22c4d57 100644 --- a/.github/workflows/python-app.yml +++ b/.github/workflows/python-app.yml @@ -25,7 +25,7 @@ jobs: - name: Run Robot File run: robot -d ./reports -e offline ./Tests/keyword_tests.robot - name: Upload test results - uses: actions/upload-artifact@v1 + uses: actions/upload-artifact@v4 if: always() with: name: robot_reports @@ -37,7 +37,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Download reports - uses: actions/download-artifact@v1 + uses: actions/download-artifact@v4 with: name: robot_reports - name: Send report to commit From 58822fa15347167c9b9c130a37547738aa1b138e Mon Sep 17 00:00:00 2001 From: Samuel Pierri Cabral Date: Tue, 9 Dec 2025 13:49:07 +0000 Subject: [PATCH 5/9] fix generate-robot-report --- .github/workflows/python-app.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/python-app.yml b/.github/workflows/python-app.yml index 22c4d57..2e78812 100644 --- a/.github/workflows/python-app.yml +++ b/.github/workflows/python-app.yml @@ -37,7 +37,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Download reports - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v1 with: name: robot_reports - name: Send report to commit From f7889faa39c2299ee4acd99a47e2a9d038600786 Mon Sep 17 00:00:00 2001 From: Samuel Pierri Cabral Date: Tue, 9 Dec 2025 13:50:27 +0000 Subject: [PATCH 6/9] fix generate-robot-report --- .github/workflows/python-app.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/python-app.yml b/.github/workflows/python-app.yml index 2e78812..1260ceb 100644 --- a/.github/workflows/python-app.yml +++ b/.github/workflows/python-app.yml @@ -37,7 +37,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Download reports - uses: actions/download-artifact@v1 + uses: actions/download-artifact@v3 with: name: robot_reports - name: Send report to commit From c4762c927f62fc93e7bf7f1970c8fd35ab5fe831 Mon Sep 17 00:00:00 2001 From: Samuel Pierri Cabral Date: Tue, 9 Dec 2025 13:51:45 +0000 Subject: [PATCH 7/9] fix generate-robot-report --- .github/workflows/python-app.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/python-app.yml b/.github/workflows/python-app.yml index 1260ceb..22c4d57 100644 --- a/.github/workflows/python-app.yml +++ b/.github/workflows/python-app.yml @@ -37,7 +37,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Download reports - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: robot_reports - name: Send report to commit From 73c04f1e639591e640c15acbbfeb5aaa71e616f8 Mon Sep 17 00:00:00 2001 From: Samuel Pierri Cabral Date: Tue, 9 Dec 2025 14:03:07 +0000 Subject: [PATCH 8/9] fix github actions --- .github/workflows/python-app.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/python-app.yml b/.github/workflows/python-app.yml index 22c4d57..cfe4e40 100644 --- a/.github/workflows/python-app.yml +++ b/.github/workflows/python-app.yml @@ -40,8 +40,9 @@ jobs: uses: actions/download-artifact@v4 with: name: robot_reports + path: reports - name: Send report to commit uses: joonvena/robotframework-reporter-action@v2.4 with: gh_access_token: ${{ secrets.GITHUB_TOKEN }} - report_path: /robot_reports \ No newline at end of file + report_path: reports/output.xml \ No newline at end of file From 873f89f86b47c78eb9749d9955911f6bc543103a Mon Sep 17 00:00:00 2001 From: Samuel Pierri Cabral Date: Tue, 9 Dec 2025 14:05:22 +0000 Subject: [PATCH 9/9] fix path --- .github/workflows/python-app.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/python-app.yml b/.github/workflows/python-app.yml index cfe4e40..38a79bf 100644 --- a/.github/workflows/python-app.yml +++ b/.github/workflows/python-app.yml @@ -45,4 +45,4 @@ jobs: uses: joonvena/robotframework-reporter-action@v2.4 with: gh_access_token: ${{ secrets.GITHUB_TOKEN }} - report_path: reports/output.xml \ No newline at end of file + report_path: reports \ No newline at end of file