diff --git a/01-TestCase/tsg_bfapi/policy_object/ExportAndImport.robot b/01-TestCase/tsg_bfapi/policy_object/ExportAndImport.robot new file mode 100644 index 0000000..639a85d --- /dev/null +++ b/01-TestCase/tsg_bfapi/policy_object/ExportAndImport.robot @@ -0,0 +1,703 @@ +*** Settings *** +Test Teardown DeletePolicyAndGroupObject ${policyIds} ${objectIds} +Resource ../../../02-Keyword/tsg_bfapi/PolicyObject.robot +Resource ../../../02-Keyword/tsg_bfapi/policy_object/Policy.robot +Resource ../../../02-Keyword/tsg_bfapi/policy_object/Object.robot +Resource ../../../02-Keyword/tsg_bfapi/policy_object/Log.robot +Resource ../../../02-Keyword/tsg_bfapi/Common.robot +Resource ../../../03-Variable/ApplicationID.txt +Library json5 +Library DateTime +Library String +Library BuiltIn +Library ../../../04-CustomLibrary/Library/fileOperations.py + +*** Variables *** +@{policyIds} ${EMPTY} +${objectIds} ${EMPTY} + +*** Test Cases *** +Object-Import-v1-ip_smallAccount + [Tags] A small amount of IP + Comment 导入ip + ${policyIds} Set Variable ${EMPTY} + ${objectIds} Set Variable ${EMPTY} + log ${objectIds} + ${rescode} ${objectType} ${importRes} ImportObject uploadFiles ip01.txt ip ${EMPTY} ${EMPTY} + ${rescode} ${response} QueryObject ?pageSize=20&pageNo=1&isExclusion=0&isInitialize=0&objectType=${objectType} + log pssssssssssssssssssssssssssssssssssssssssssssssssssss + log ${response} + ${objectIds} Create List ${response['data']['list'][0]['objectId']} + sleep 5 + +Object-Import-v1-ip_reachLimit + [Tags] reachLimit IP + Comment 导入ip + ${policyIds} Set Variable ${EMPTY} + ${objectIds} Set Variable ${EMPTY} + log ${objectIds} + ${rescode} ${objectType} ${importRes} ImportObject uploadFiles ip_99968.txt ip ${EMPTY} ${EMPTY} + ${rescode} ${response} QueryObject ?pageSize=20&pageNo=1&isExclusion=0&isInitialize=0&objectType=${objectType} + log pssssssssssssssssssssssssssssssssssssssssssssssssssss + log ${response} + ${objectIds} Create List ${response['data']['list'][0]['objectId']} + sleep 5 + +Object-Import-v1-ip_overLimit + [Tags] OverLimit IP with 2 emptyLines + Comment 导入ip + ${policyIds} Set Variable ${EMPTY} + ${objectIds} Create List + log ${objectIds} + ${rescode} ${objectType} ${importRes} ImportObject uploadFiles ip_100001.txt ip ${EMPTY} ${EMPTY} + log pssssssssssssssssssssssssssssssssssssssssssssssssssss + sleep 5 + +Object-Import-v1-url_smallAccount + [Tags] A small amount of url + Comment 导入url + ${policyIds} Set Variable ${EMPTY} + ${objectIds} Set Variable ${EMPTY} + log ${objectIds} + ${rescode} ${objectType} ${importRes} ImportObject uploadFiles url_example2.txt url ${EMPTY} ${EMPTY} + ${rescode} ${response} QueryObject ?pageSize=20&pageNo=1&isExclusion=0&isInitialize=0&objectType=${objectType} + log pssssssssssssssssssssssssssssssssssssssssssssssssssss + log ${response} + ${objectIds} Create List ${response['data']['list'][0]['objectId']} + sleep 5 + +Object-Import-v1-url_reachLimit + [Tags] reachLimit url + Comment 导入url + ${policyIds} Set Variable ${EMPTY} + ${objectIds} Set Variable ${EMPTY} + log ${objectIds} + ${rescode} ${objectType} ${importRes} ImportObject uploadFiles url_1000000.txt url ${EMPTY} ${EMPTY} + ${rescode} ${response} QueryObject ?pageSize=20&pageNo=1&isExclusion=0&isInitialize=0&objectType=${objectType} + log pssssssssssssssssssssssssssssssssssssssssssssssssssss + log ${response} + ${objectIds} Create List ${response['data']['list'][0]['objectId']} + sleep 5 + +Object-Import-v1-url_overLimit + [Tags] OverLimit url with 2 emptyLines + Comment 导入url + ${policyIds} Set Variable ${EMPTY} + ${objectIds} Create List + log ${objectIds} + ${rescode} ${objectType} ${importRes} ImportObject uploadFiles url_1000001.txt url ${EMPTY} ${EMPTY} + sleep 5 + +Object-Import-v1-fqdn + [Tags] A small amount of fqdn + Comment 导入fqdn + ${policyIds} Set Variable ${EMPTY} + ${objectIds} Set Variable ${EMPTY} + log ${objectIds} + ${rescode} ${objectType} ${importRes} ImportObject uploadFiles fqdn_example.txt fqdn ${EMPTY} ${EMPTY} + ${rescode} ${response} QueryObject ?pageSize=20&pageNo=1&isExclusion=0&isInitialize=0&objectType=${objectType} + log pssssssssssssssssssssssssssssssssssssssssssssssssssss + log ${response} + ${objectIds} Create List ${response['data']['list'][0]['objectId']} + sleep 5 + +Object-Import-v1-fqdn_reachLimit + [Tags] reachLimit fqdn + Comment 导入fqdn + ${policyIds} Set Variable ${EMPTY} + ${objectIds} Set Variable ${EMPTY} + log ${objectIds} + ${rescode} ${objectType} ${importRes} ImportObject uploadFiles fqdn_100000.txt fqdn ${EMPTY} ${EMPTY} + ${rescode} ${response} QueryObject ?pageSize=20&pageNo=1&isExclusion=0&isInitialize=0&objectType=${objectType} + log pssssssssssssssssssssssssssssssssssssssssssssssssssss + log ${response} + ${objectIds} Create List ${response['data']['list'][0]['objectId']} + sleep 5 + +Object-Import-v1-fqdn_overLimit + [Tags] OverLimit fqdn with 2 emptyLines + Comment 导入fqdn + ${policyIds} Set Variable ${EMPTY} + ${objectIds} Create List + log ${objectIds} + ${rescode} ${objectType} ${importRes} ImportObject uploadFiles fqdn_100009.txt fqdn ${EMPTY} ${EMPTY} + sleep 5 + +Object-Import-v1-subid + [Tags] A small amount of subid + Comment 导入subid + ${policyIds} Set Variable ${EMPTY} + ${objectIds} Set Variable ${EMPTY} + log ${objectIds} + ${rescode} ${objectType} ${importRes} ImportObject uploadFiles subid_example.txt subscriberid ${EMPTY} ${EMPTY} + ${rescode} ${response} QueryObject ?pageSize=20&pageNo=1&isExclusion=0&isInitialize=0&objectType=${objectType} + log pssssssssssssssssssssssssssssssssssssssssssssssssssss + log ${response} + ${objectIds} Create List ${response['data']['list'][0]['objectId']} + sleep 5 + +Object-Import-v1-subid_reachLimit + [Tags] reachLimit subid + Comment 导入subid + ${policyIds} Set Variable ${EMPTY} + ${objectIds} Set Variable ${EMPTY} + log ${objectIds} + ${rescode} ${objectType} ${importRes} ImportObject uploadFiles subid_10w.txt subscriberid ${EMPTY} ${EMPTY} + ${rescode} ${response} QueryObject ?pageSize=20&pageNo=1&isExclusion=0&isInitialize=0&objectType=${objectType} + log pssssssssssssssssssssssssssssssssssssssssssssssssssss + log ${response} + ${objectIds} Create List ${response['data']['list'][0]['objectId']} + sleep 5 + +Object-Import-v1-subid_overLimit + [Tags] OverLimit subid with 2 emptyLines + Comment 导入subid + ${policyIds} Set Variable ${EMPTY} + ${objectIds} Create List + log ${objectIds} + ${rescode} ${objectType} ${importRes} ImportObject uploadFiles subid_100001.txt subscriberid ${EMPTY} ${EMPTY} + sleep 5 + +Object-Import-v1-httpsig + [Tags] A small amount of http_signature + Comment 导入http_signature + ${policyIds} Set Variable ${EMPTY} + ${objectIds} Set Variable ${EMPTY} + log ${objectIds} + ${rescode} ${objectType} ${importRes} ImportObject uploadFiles httpsig_example.txt http_signature ${EMPTY} ${EMPTY} + ${rescode} ${response} QueryObject ?pageSize=20&pageNo=1&isExclusion=0&isInitialize=0&objectType=${objectType} + log pssssssssssssssssssssssssssssssssssssssssssssssssssss + log ${response} + ${objectIds} Create List ${response['data']['list'][0]['objectId']} + sleep 5 + +Object-Import-v1-_httpsig_reachLimit + [Tags] reachLimit http_signature + Comment 导入http_signature + ${policyIds} Set Variable ${EMPTY} + ${objectIds} Set Variable ${EMPTY} + log ${objectIds} + ${rescode} ${objectType} ${importRes} ImportObject uploadFiles httpsig10w.txt http_signature ${EMPTY} ${EMPTY} + ${rescode} ${response} QueryObject ?pageSize=20&pageNo=1&isExclusion=0&isInitialize=0&objectType=${objectType} + log pssssssssssssssssssssssssssssssssssssssssssssssssssss + log ${response} + ${objectIds} Create List ${response['data']['list'][0]['objectId']} + sleep 5 + +Object-Import-v1-httpsig_overLimit + [Tags] OverLimit http_signature with 2 emptyLines + Comment 导入http_signature + ${policyIds} Set Variable ${EMPTY} + ${objectIds} Create List + log ${objectIds} + ${rescode} ${objectType} ${importRes} ImportObject uploadFiles httpsig_100001.txt http_signature ${EMPTY} ${EMPTY} + sleep 5 + +Object-Import-v1-keywords + [Tags] A small amount of keywords + Comment 导入keywords + ${policyIds} Set Variable ${EMPTY} + ${objectIds} Set Variable ${EMPTY} + log ${objectIds} + ${rescode} ${objectType} ${importRes} ImportObject uploadFiles keyword_example.txt keywords ${EMPTY} ${EMPTY} + ${rescode} ${response} QueryObject ?pageSize=20&pageNo=1&isExclusion=0&isInitialize=0&objectType=${objectType} + log pssssssssssssssssssssssssssssssssssssssssssssssssssss + log ${response} + ${objectIds} Create List ${response['data']['list'][0]['objectId']} + sleep 5 + +Object-Import-v1-keywords_reachLimit + [Tags] reachLimit keywords + Comment 导入ip + ${policyIds} Set Variable ${EMPTY} + ${objectIds} Set Variable ${EMPTY} + log ${objectIds} + ${rescode} ${objectType} ${importRes} ImportObject uploadFiles keyword_10w.txt keywords ${EMPTY} ${EMPTY} + ${rescode} ${response} QueryObject ?pageSize=20&pageNo=1&isExclusion=0&isInitialize=0&objectType=${objectType} + log pssssssssssssssssssssssssssssssssssssssssssssssssssss + log ${response} + ${objectIds} Create List ${response['data']['list'][0]['objectId']} + sleep 5 + +Object-Import-v1-keywords_overLimit + [Tags] OverLimit keywords with 2 emptyLines + Comment 导入keywords + ${policyIds} Set Variable ${EMPTY} + ${objectIds} Create List + log ${objectIds} + ${rescode} ${objectType} ${importRes} ImportObject uploadFiles keyword_100001.txt keywords ${EMPTY} ${EMPTY} + sleep 5 + +Object-Import-v1-accounts + [Tags] A small amount of accounts + Comment 导入account + ${policyIds} Set Variable ${EMPTY} + ${objectIds} Set Variable ${EMPTY} + log ${objectIds} + ${rescode} ${objectType} ${importRes} ImportObject uploadFiles account_example.txt account ${EMPTY} ${EMPTY} + log ${EMPTY} + ${rescode} ${response} QueryObject ?pageSize=20&pageNo=1&isExclusion=0&isInitialize=0&objectType=${objectType} + log pssssssssssssssssssssssssssssssssssssssssssssssssssss + log ${response} + ${objectIds} Create List ${response['data']['list'][0]['objectId']} + sleep 5 + +Object-Import-v1-account_reachLimit + [Tags] reachLimit account + Comment 导入account + ${policyIds} Set Variable ${EMPTY} + ${objectIds} Set Variable ${EMPTY} + log ${objectIds} + ${rescode} ${objectType} ${importRes} ImportObject uploadFiles account10w.txt account ${EMPTY} ${EMPTY} + ${rescode} ${response} QueryObject ?pageSize=20&pageNo=1&isExclusion=0&isInitialize=0&objectType=${objectType} + log pssssssssssssssssssssssssssssssssssssssssssssssssssss + log ${response} + ${objectIds} Create List ${response['data']['list'][0]['objectId']} + sleep 5 + +Object-Import-v1-account_overLimit + [Tags] OverLimit account with 2 emptyLines + Comment 导入account + ${policyIds} Set Variable ${EMPTY} + ${objectIds} Create List + log ${objectIds} + ${rescode} ${objectType} ${importRes} ImportObject uploadFiles account100001.txt account ${EMPTY} ${EMPTY} + sleep 5 + +Object-Export-v1-chooseId_ip + [Tags] export chooseId ip + Comment 导 出ip + ${objectIds} Create List + ${policyIds} Set Variable ${EMPTY} + ${response} ExportObject ip endpoint 110788,110753 ${EMPTY} + WriteBinary ${response} ${path}/downloads/ip_chooseID.txt + sleep 5 + +Object-Export-v1-choosePage_ip + [Tags] export choosePage ip + Comment 导 出ip + ${objectIds} Create List + ${policyIds} Set Variable ${EMPTY} + ${rescode} ${response} QueryObject ?pageSize=20&pageNo=1&isExclusion=0&isInitialize=0&objectType=ip&objectSubType=endpoint + @{exportIds} Create List ${EMPTY} + FOR ${n} IN RANGE 4 + log ${n+1} + Insert Into List ${exportIds} ${n+1} ${response['data']['list'][${n}]['objectId']} + END + Remove From List ${exportIds} 0 + log ${exportIds} + ${exportIds1} Set Variable ${EMPTY} + :FOR ${element} IN @{exportIds} + \ log ${element} + \ ${exportIds1} Catenate SEPARATOR=, ${element} ${exportIds1} + ${exportIds1}= Get Substring ${exportIds1} 0 -1 + ${response} ExportObject ip endpoint ${exportIds1} ${EMPTY} + WriteBinary ${response} ${path}/downloads/ip_choosePage.txt + sleep 5 + +Object-Export-v1-all_ip + [Tags] export all ip + Comment 导 出ip + ${objectIds} Create List + ${policyIds} Set Variable ${EMPTY} + ${response} ExportObject ip endpoint ${EMPTY} ${EMPTY} + WriteBinary ${response} ${path}/downloads/ip_all.txt + sleep 5 + +Object-Export-v1-chooseId_fqdn + [Tags] export chooseId fqdn + Comment 导 出fqdn + ${objectIds} Create List + ${policyIds} Set Variable ${EMPTY} + ${response} ExportObject fqdn ${EMPTY} 110873 ${EMPTY} + WriteBinary ${response} ${path}/downloads/fqdn_chooseId.txt + sleep 5 + +Object-Export-v1-choosePage_fqdn + [Tags] export choosePage fqdn + Comment 导 出fqdn + ${objectIds} Create List + ${policyIds} Set Variable ${EMPTY} + ${rescode} ${response} QueryObject ?pageSize=20&pageNo=1&isExclusion=0&isInitialize=0&objectType=fqdn + @{exportIds} Create List ${EMPTY} + FOR ${n} IN RANGE 1 + log ${n+1} + Insert Into List ${exportIds} ${n+1} ${response['data']['list'][${n}]['objectId']} + END + Remove From List ${exportIds} 0 + log ${exportIds} + ${exportIds1} Set Variable ${EMPTY} + :FOR ${element} IN @{exportIds} + \ log ${element} + \ ${exportIds1} Catenate SEPARATOR=, ${element} ${exportIds1} + ${exportIds1}= Get Substring ${exportIds1} 0 -1 + ${response} ExportObject fqdn ${EMPTY} ${exportIds1} ${EMPTY} + WriteBinary ${response} ${path}/downloads/fqdn_choosePage.txt + sleep 5 + + +Object-Export-v1-all_fqdn + [Tags] export all fqdn + Comment 导 出fqdn + ${objectIds} Create List + ${policyIds} Set Variable ${EMPTY} + ${response} ExportObject fqdn ${EMPTY} ${EMPTY} ${EMPTY} + WriteBinary ${response} ${path}/downloads/fqdn_all.txt + sleep 5 + +Object-Export-v1-chooseId_subid + [Tags] export chooseId subid + Comment 导 出subid + ${objectIds} Create List + ${policyIds} Set Variable ${EMPTY} + ${response} ExportObject subscriberid ${EMPTY} 110874 ${EMPTY} + WriteBinary ${response} ${path}/downloads/subid_chooseID.txt + sleep 5 + +Object-Export-v1-choosePage_subid + [Tags] export choosePage subid + Comment 导 出subid + ${objectIds} Create List + ${policyIds} Set Variable ${EMPTY} + ${rescode} ${response} QueryObject ?pageSize=20&pageNo=1&isExclusion=0&isInitialize=0&objectType=subscriberid + @{exportIds} Create List ${EMPTY} + FOR ${n} IN RANGE 1 + log ${n+1} + Insert Into List ${exportIds} ${n+1} ${response['data']['list'][${n}]['objectId']} + END + Remove From List ${exportIds} 0 + log ${exportIds} + ${exportIds1} Set Variable ${EMPTY} + :FOR ${element} IN @{exportIds} + \ log ${element} + \ ${exportIds1} Catenate SEPARATOR=, ${element} ${exportIds1} + ${exportIds1}= Get Substring ${exportIds1} 0 -1 + ${response} ExportObject subscriberid ${EMPTY} ${exportIds1} ${EMPTY} + WriteBinary ${response} ${path}/downloads/subid_choosePage.txt + sleep 5 + +Object-Export-v1-all_subid + [Tags] export all subid + Comment 导 出subid + ${objectIds} Create List + ${policyIds} Set Variable ${EMPTY} + ${response} ExportObject subscriberid ${EMPTY} ${EMPTY} ${EMPTY} + WriteBinary ${response} ${path}/downloads/subid_all.txt + sleep 5 + +Object-Export-v1-chooseId_http_signature + [Tags] export chooseId http_signature + Comment 导 出http_signature + ${objectIds} Create List + ${policyIds} Set Variable ${EMPTY} + ${response} ExportObject http_signature ${EMPTY} 110760 ${EMPTY} + WriteBinary ${response} ${path}/downloads/httpsig_chooseID.txt + sleep 5 + +Object-Export-v1-choosePage_http_signature + [Tags] export choosePage http_signature + Comment 导 出http_signature + ${objectIds} Create List + ${policyIds} Set Variable ${EMPTY} + ${rescode} ${response} QueryObject ?pageSize=20&pageNo=1&isExclusion=0&isInitialize=0&objectType=http_signature + @{exportIds} Create List ${EMPTY} + FOR ${n} IN RANGE 1 + log ${n+1} + Insert Into List ${exportIds} ${n+1} ${response['data']['list'][${n}]['objectId']} + END + Remove From List ${exportIds} 0 + log ${exportIds} + ${exportIds1} Set Variable ${EMPTY} + :FOR ${element} IN @{exportIds} + \ log ${element} + \ ${exportIds1} Catenate SEPARATOR=, ${element} ${exportIds1} + ${exportIds1}= Get Substring ${exportIds1} 0 -1 + ${response} ExportObject http_signature ${EMPTY} ${exportIds1} ${EMPTY} + WriteBinary ${response} ${path}/downloads/http_signature_choosePage.txt + sleep 5 + +Object-Export-v1-all_http_signature + [Tags] export all http_signature + Comment 导 出http_signature + ${objectIds} Create List + ${policyIds} Set Variable ${EMPTY} + ${response} ExportObject http_signature ${EMPTY} ${EMPTY} ${EMPTY} + WriteBinary ${response} ${path}/downloads/httpsig_all.txt + sleep 5 + +Object-Export-v1-keywords + [Tags] export chooseId Keywords + Comment 导 出Keywords + ${objectIds} Create List + ${policyIds} Set Variable ${EMPTY} + ${response} ExportObject Keywords ${EMPTY} 110762 ${EMPTY} + WriteBinary ${response} ${path}/downloads/keyword_chooseID.txt + sleep 5 + +Object-Export-v1-choosePage_Keywords + [Tags] export choosePage Keywords + Comment 导 出Keywords + ${objectIds} Create List + ${policyIds} Set Variable ${EMPTY} + ${rescode} ${response} QueryObject ?pageSize=20&pageNo=1&isExclusion=0&isInitialize=0&objectType=Keywords + @{exportIds} Create List ${EMPTY} + FOR ${n} IN RANGE 1 + log ${n+1} + Insert Into List ${exportIds} ${n+1} ${response['data']['list'][${n}]['objectId']} + END + Remove From List ${exportIds} 0 + log ${exportIds} + ${exportIds1} Set Variable ${EMPTY} + :FOR ${element} IN @{exportIds} + \ log ${element} + \ ${exportIds1} Catenate SEPARATOR=, ${element} ${exportIds1} + ${exportIds1}= Get Substring ${exportIds1} 0 -1 + ${response} ExportObject Keywords ${EMPTY} ${exportIds1} ${EMPTY} + WriteBinary ${response} ${path}/downloads/Keywords_choosePage.txt + sleep 5 + +Object-Export-v1-keywords + [Tags] export all Keywords + Comment 导 出Keywords + ${objectIds} Create List + ${policyIds} Set Variable ${EMPTY} + ${response} ExportObject Keywords ${EMPTY} ${EMPTY} ${EMPTY} + WriteBinary ${response} ${path}/downloads/keyword_all.txt + sleep 5 + +Object-Export-v1-urls + [Tags] export chooseId URLs + Comment 导 出URLs + ${objectIds} Create List + ${policyIds} Set Variable ${EMPTY} + ${response} ExportObject url ${EMPTY} 110875 ${EMPTY} + WriteBinary ${response} ${path}/downloads/url_chooseID.txt + sleep 5 + +Object-Export-v1-choosePage_url + [Tags] export choosePage url + Comment 导 出Keywords + ${objectIds} Create List + ${policyIds} Set Variable ${EMPTY} + ${rescode} ${response} QueryObject ?pageSize=20&pageNo=1&isExclusion=0&isInitialize=0&objectType=url + @{exportIds} Create List ${EMPTY} + FOR ${n} IN RANGE 1 + log ${n+1} + Insert Into List ${exportIds} ${n+1} ${response['data']['list'][${n}]['objectId']} + END + Remove From List ${exportIds} 0 + log ${exportIds} + ${exportIds1} Set Variable ${EMPTY} + :FOR ${element} IN @{exportIds} + \ log ${element} + \ ${exportIds1} Catenate SEPARATOR=, ${element} ${exportIds1} + ${exportIds1}= Get Substring ${exportIds1} 0 -1 + ${response} ExportObject url ${EMPTY} ${exportIds1} ${EMPTY} + WriteBinary ${response} ${path}/downloads/url_choosePage.txt + sleep 5 + +Object-Export-v1-urls + [Tags] export all URLs + Comment 导 出URLs + ${objectIds} Create List + ${policyIds} Set Variable ${EMPTY} + ${response} ExportObject url ${EMPTY} ${EMPTY} ${EMPTY} + WriteBinary ${response} ${path}/downloads/url_all.txt + sleep 5 + +Object-Export-v1-accounts + [Tags] export chooseId accounts + Comment 导 出Accounts + ${objectIds} Create List + ${policyIds} Set Variable ${EMPTY} + ${response} ExportObject account ${EMPTY} 110876 ${EMPTY} + WriteBinary ${response} ${path}/downloads/account_chooseID.txt + sleep 5 + +Object-Export-v1-choosePage_account + [Tags] export choosePage account + Comment 导 出account + ${objectIds} Create List + ${policyIds} Set Variable ${EMPTY} + ${rescode} ${response} QueryObject ?pageSize=20&pageNo=1&isExclusion=0&isInitialize=0&objectType=account + @{exportIds} Create List ${EMPTY} + FOR ${n} IN RANGE 1 + log ${n+1} + Insert Into List ${exportIds} ${n+1} ${response['data']['list'][${n}]['objectId']} + END + Remove From List ${exportIds} 0 + log ${exportIds} + ${exportIds1} Set Variable ${EMPTY} + :FOR ${element} IN @{exportIds} + \ log ${element} + \ ${exportIds1} Catenate SEPARATOR=, ${element} ${exportIds1} + ${exportIds1}= Get Substring ${exportIds1} 0 -1 + ${response} ExportObject account ${EMPTY} ${exportIds1} ${EMPTY} + WriteBinary ${response} ${path}/downloads/account_choosePage.txt + sleep 5 + +Object-Export-v1-all_accounts + [Tags] export all accounts + Comment 导 出Accounts + ${objectIds} Create List + ${policyIds} Set Variable ${EMPTY} + ${response} ExportObject account ${EMPTY} ${EMPTY} ${EMPTY} + WriteBinary ${response} ${path}/downloads/account_all.txt + sleep 5 + +Policy-Import-v2-tsg_security_littleData_json + [Tags] export littleData tsg_security + Comment export littleData tsg_security + ${objectIds} Create List + ${rescode} ImportPolicy uploadFiles security_7ge.json tsg_security + ${rescode} ${response} QueryPolicy ?pageSize=20&pageNo=1&policyType=tsg_security&policyName= + @{policyIds} Create List ${EMPTY} + FOR ${n} IN RANGE 3 + log ${n+1} + Insert Into List ${policyIds} ${n+1} ${response['data']['list'][${n+1}]['policyId']} + END + Remove From List ${policyIds} 0 + log ${policyIds} + ${length}= Get Length ${policyIds} + ${policyIds} Create List {"policyType":"tsg_security","policyIds":${policyIds}} + log ${policyIds} + sleep 5 + + +Policy-Import-v2-little_Data_tsg_security_txt + [Tags] export littleData tsg_security + Comment 导入安全策略txt + ${objectIds} Create List + ${rescode} ImportPolicy uploadFiles security_7ge.txt tsg_security + ${rescode} ${response} QueryPolicy ?pageSize=20&pageNo=1&policyType=tsg_security&policyName= + @{policyIds} Create List ${EMPTY} + FOR ${n} IN RANGE 3 + log ${n+1} + Insert Into List ${policyIds} ${n+1} ${response['data']['list'][${n+1}]['policyId']} + END + Remove From List ${policyIds} 0 + log ${policyIds} + ${length}= Get Length ${policyIds} + ${policyIds} Create List {"policyType":"tsg_security","policyIds":${policyIds}} + log ${policyIds} + sleep 5 + +Policy-Import-v2-pxy_manipulation_littleData_json + [Tags] export littleData pxy_manipulation + Comment 导入代理策略json + ${objectIds} Create List + ${rescode} ${totalNum} ImportPolicy uploadFiles pxy.json pxy_manipulation + ${rescode} ${response} QueryPolicy ?pageSize=${totalNum}&pageNo=1&policyType=pxy_manipulation&policyName= + @{policyIds} Create List ${EMPTY} + FOR ${n} IN RANGE 1 + log ${n+1} + Insert Into List ${policyIds} ${n+1} ${response['data']['list'][${n}]['policyId']} + END + Remove From List ${policyIds} 0 + log ${policyIds} + ${length}= Get Length ${policyIds} + ${policyIds} Create List {"policyType":"pxy_manipulation","policyIds":${policyIds}} + log ${policyIds} + sleep 5 + +Policy-Import-v2-pxy_manipulation_littleData_txt + [Tags] export littleData pxy_manipulation + Comment 导入代理策略txt + ${objectIds} Create List + ${rescode} ${totalNum} ImportPolicy uploadFiles pxy.txt pxy_manipulation + ${rescode} ${response} QueryPolicy ?pageSize=${totalNum}&pageNo=1&policyType=pxy_manipulation&policyName= + @{policyIds} Create List ${EMPTY} + FOR ${n} IN RANGE ${totalNum} + log ${n+1} + Insert Into List ${policyIds} ${n+1} ${response['data']['list'][${n+1}]['policyId']} + END + Remove From List ${policyIds} 0 + log ${policyIds} + ${length}= Get Length ${policyIds} + ${policyIds} Create List {"policyType":"pxy_manipulation","policyIds":${policyIds}} + log ${policyIds} + sleep 5 + +Policy-Export-v1-chooseId_tsg_security + [Tags] export chooseId tsg_security + Comment 导 出安全json + ${objectIds} Create List + ${policyIds} Set Variable ${EMPTY} + ${response} ExportPolicy tsg_security 961350,961351 ${EMPTY} + WriteFile downloads security_id.json ${response} + sleep 5 + +Policy-Export-v1-choosePage_tsg_security + [Tags] export choosePage tsg_security + Comment 导 出安全json + ${objectIds} Create List + ${policyIds} Set Variable ${EMPTY} + ${rescode} ${response} QueryPolicy ?pageSize=4&pageNo=1&policyType=tsg_security&policyName= + @{exportIds} Create List ${EMPTY} + FOR ${n} IN RANGE 4 + log ${n+1} + Insert Into List ${exportIds} ${n+1} ${response['data']['list'][${n+1}]['policyId']} + END + Remove From List ${exportIds} 0 + log ${exportIds} + ${exportIds1} Set Variable ${EMPTY} + :FOR ${element} IN @{exportIds} + \ log ${element} + \ ${exportIds1} Catenate SEPARATOR=, ${element} ${exportIds1} + ${exportIds1}= Get Substring ${exportIds1} 0 -1 + ${response} ExportPolicy tsg_security ${exportIds1} ${EMPTY} + WriteFile downloads security_page.json ${response} + sleep 5 + +Policy-Export-v1-all_tsg_security + Comment 导 出安全json + [Tags] export all tsg_security + ${objectIds} Create List + ${policyIds} Set Variable ${EMPTY} + ${response} ExportPolicy tsg_security ${EMPTY} ${EMPTY} + WriteFile downloads security_all.json ${response} + sleep 5 + +Policy-Export-v1-chooseId_pxy_manipulation + Comment 导 出代理json + [Tags] export chooseId pxy_manipulation + ${objectIds} Create List + ${policyIds} Set Variable ${EMPTY} + ${response} ExportPolicy pxy_manipulation 961403,961404 ${EMPTY} + WriteFile downloads proxy_id.json ${response} + sleep 5 + +Policy-Export-v1-choosePage_pxy_manipulation + [Tags] export choosePage pxy_manipulation + Comment 导 出代理json + ${objectIds} Create List + ${policyIds} Set Variable ${EMPTY} + ${rescode} ${response} QueryPolicy ?pageSize=4&pageNo=1&policyType=pxy_manipulation&policyName= + @{exportIds} Create List ${EMPTY} + FOR ${n} IN RANGE 4 + log ${n+1} + Insert Into List ${exportIds} ${n+1} ${response['data']['list'][${n}]['policyId']} + END + Remove From List ${exportIds} 0 + log ${exportIds} + ${exportIds1} Set Variable ${EMPTY} + :FOR ${element} IN @{exportIds} + \ log ${element} + \ ${exportIds1} Catenate SEPARATOR=, ${element} ${exportIds1} + ${exportIds1}= Get Substring ${exportIds1} 0 -1 + ${response} ExportPolicy pxy_manipulation ${exportIds1} ${EMPTY} + WriteFile downloads proxy_page.json ${response} + sleep 5 + +Policy-Export-v1-all_pxy_manipulation + Comment 导 出代理json + [Tags] export all pxy_manipulation + ${objectIds} Create List + ${policyIds} Set Variable ${EMPTY} + ${response} ExportPolicy pxy_manipulation ${EMPTY} ${EMPTY} + WriteFile downloads proxy_all.json ${response} + sleep 5 + + + + diff --git a/02-Keyword/tsg_bfapi/policy_object/Object.robot b/02-Keyword/tsg_bfapi/policy_object/Object.robot index 72de9eb..1ea7b4c 100644 --- a/02-Keyword/tsg_bfapi/policy_object/Object.robot +++ b/02-Keyword/tsg_bfapi/policy_object/Object.robot @@ -6,118 +6,117 @@ Resource ../../../02-Keyword/tsg_bfapi/policy_file_interface/Functional Resource ProcessObjectBody.robot Library Collections Resource ../Common.robot +Library ../../../04-CustomLibrary/Library/fileOperations.py +Library DatabaseLibrary + *** Variables *** -${objectUrl} /policy/object +${objectUrl} /policy/object + *** Keywords *** AddObjects - [Documentation] - ... 新增策略对象 + [Arguments] ${returnData} ${objectList} + [Documentation] 新增策略对象 ... objectList,策略对象,可为list类型与dict类型 ... addItemList自动过滤itemId ... updateItemList自动过滤isInitialize(update时该字段引发异常) ... ipItem格式为dict,自动过滤空的字段 - ... stringItem格式为dict,需要注意keywordArray字段应传入逗号分隔的字符串eg: keyword1,keyword2 + ... stringItem格式为dict,需要注意keywordArray字段应传入逗号分隔的字符串eg: keyword1,keyword2 ... http_signature为代表的拓展关键字keywordArray字段也是以逗号分隔的 ... returnData,是否返回数据,固定为1 - [Arguments] ${returnData} ${objectList} ${returnData}= Run Keyword If '${returnData}' == '${EMPTY}' Set Variable 1 ... ELSE Set Variable ${returnData} - #必选参数判定 Should Not Be Empty ${objectList} ${dictType} = Evaluate type(${objectList}) ${body} Run Keyword If "${dictType}" == "" ObjectListOperation ${returnData} ${objectList} add - ... ELSE IF "${dictType}" == "" ObjectOperation ${returnData} ${objectList} add + ... ELSE IF "${dictType}" == "" ObjectOperation ${returnData} ${objectList} add ... ELSE Set Variable ${EMPTY} - ${response} BasePostRequestForV2 ${objectUrl} ${body} ${version} - ${objectIds} Run Keyword If "${returnData}" == "1" Get-ObjectIds ${response} - ... ELSE Create List - ${rescode} Set Variable ${response['code']} + ${objectIds} Run Keyword If "${returnData}" == "1" Get-ObjectIds ${response} + ... ELSE Create List + ${rescode} Set Variable ${response['code']} Should Be Equal As Strings ${rescode} 200 [Return] ${rescode} ${objectIds} + UpdateObjects - [Documentation] - ... 更新策略对象 + [Arguments] ${returnData} ${objectList} ${opAction} + [Documentation] 更新策略对象 ... objectList,策略对象,可为list类型与dict类型 ... addItemList自动过滤itemId ... updateItemList自动过滤isInitialize(update时该字段引发异常) ... ipItem格式为dict,自动过滤空的字段 - ... stringItem格式为dict,需要注意keywordArray字段应传入逗号分隔的字符串eg: keyword1,keyword2 + ... stringItem格式为dict,需要注意keywordArray字段应传入逗号分隔的字符串eg: keyword1,keyword2 ... http_signature为代表的拓展关键字keywordArray字段也是以逗号分隔的 ... returnData,是否返回数据,固定为1 ... opAction,可为update,enable,disable - [Arguments] ${returnData} ${objectList} ${opAction} ${returnData}= Run Keyword If '${returnData}' == '${EMPTY}' Set Variable 1 ... ELSE Set Variable ${returnData} - #必选参数判定 Should Not Be Empty ${objectList} ${dictType} = Evaluate type(${objectList}) ${body} Run Keyword If "${dictType}" == "" ObjectListOperation ${returnData} ${objectList} ${opAction} - ... ELSE IF "${dictType}" == "" ObjectOperation ${returnData} ${objectList} ${opAction} + ... ELSE IF "${dictType}" == "" ObjectOperation ${returnData} ${objectList} ${opAction} ... ELSE Set Variable ${EMPTY} - ${response} BaseEditRequestForV2 ${objectUrl} ${body} ${version} - ${rescode} Set Variable ${response['code']} + ${rescode} Set Variable ${response['code']} Should Be Equal As Strings ${rescode} 200 [Return] ${rescode} + GetObjectItems - [Documentation] - ... 获取策略对象中的item,策略对象单元 + [Arguments] ${params} + [Documentation] 获取策略对象中的item,策略对象单元 ... 当updateItemList中有需要传入数据时 ... 调用此关键字 - [Arguments] ${params} #必选参数判定 - Should Not Be Empty ${params} + Should Not Be Empty ${params} ${paramsStr} Dictionary-To-QueryParams ${params} ${response} BaseFormRequest /policy/items ${paramsStr} ${version} - ${rescode} Set Variable ${response['code']} + ${rescode} Set Variable ${response['code']} Should Be Equal As Strings ${rescode} 200 - ${data} Set Variable ${response['data']} + ${data} Set Variable ${response['data']} ${itemIds} Create List FOR ${item} IN @{data['list']} Append To List ${itemIds} ${item['itemId']} END [Return] ${rescode} ${itemIds} ${data['list']} + GetObjectItems1 - [Documentation] - ... 获取策略对象中的item,策略对象单元 + [Arguments] ${params} + [Documentation] 获取策略对象中的item,策略对象单元 ... 当updateItemList中有需要传入数据时 ... 调用此关键字 - [Arguments] ${params} #必选参数判定 - Should Not Be Empty ${params} + Should Not Be Empty ${params} ${paramsStr} Dictionary-To-QueryParams ${params} ${response} BaseFormRequest /policy/items ${paramsStr} ${version} - ${rescode} Set Variable ${response['code']} + ${rescode} Set Variable ${response['code']} Should Be Equal As Strings ${rescode} 200 - ${data} Set Variable ${response['data']} + ${data} Set Variable ${response['data']} [Return] ${rescode} ${data} + DeleteObjects - [Documentation] - ... 删除策略对象 + [Arguments] ${objectIds} + [Documentation] 删除策略对象 ... params,传入的删除字典 ... 结构为[1,2,3] - [Arguments] ${objectIds} ${type} Evaluate isinstance(${objectIds},list) - Should Be True ${type} + Should Be True ${type} ${dict} Create Dictionary objectIds=${objectIds} ${json} json.Dumps ${dict} ensure_ascii=False ${response} BaseDeleteRequest /${version}${objectUrl} ${json} - ${rescode} Set Variable ${response['code']} - Should Be Equal As Strings ${rescode} 200 + ${rescode} Set Variable ${response['code']} + Should Be Equal As Strings ${rescode} 200 [Return] ${rescode} + ImportObject - [Documentation] - ... 策略对象导入 + [Arguments] ${filePath} ${fileName} ${objectType} ${objectSubType} ${objectName} + [Documentation] 策略对象导入 ... filePath文件路径 ... fileName文件名称 ... objectType对象类型 ... objectSubType对象子类型 ... objectName对象名称 ... jira CHON-12导入限制需求支持 - [Arguments] ${filePath} ${fileName} ${objectType} ${objectSubType} ${objectName} Directory Should Exist ${path} File Should Exist ${path}/${filePath}/${fileName} File Should Not Be Empty ${path}/${filePath}/${fileName} @@ -126,12 +125,21 @@ ImportObject #获取Item 的总数 ${total} GetItemNum ${objectType} ${objectSubType} #获取导入文件中的总行数 + #${lines} CountLines ${path}/${filePath}/${fileName} ${lines} CountLines ${path}/${filePath}/${fileName} #总数超过一定数据量测试不通过 - ${total1} Evaluate ${total}+${lines} + ${total1} Evaluate ${total}+${lines} + #链接数据库查询上限 + Connect To Database Using Custom Params pymysql ${mysqlHost} + ${objectLimit} query SELECT cfg_value FROM t_sys_cfg WHERE cfg_name='${objectType}_upper_limit' + ${objectLimit} Set Variable ${objectLimit[0][0]} + ${remaining} Evaluate ${objectLimit}-${total} + log ${objectType}剩余可导入量为:${remaining} + ${testType} Evaluate type($objectLimit) + Disconnect From Database #jira CHON-12导入限制需求支持 - Run Keyword If "${objectType}"=="url" and ${total1}>1000000 Fail 当前已经存在item个数${total},待导入个数${lines},总数超过100万条! - ... ELSE IF ${total1}>100000 Fail 当前已经存在item个数${total},待导入个数${lines},总数超过10万条! + Run Keyword If "${objectType}"=="url" and ${total1}>${objectLimit} log 当前已经存在item个数${total},待导入个数${lines},总数超过${objectLimit}条! + ... ELSE IF ${total1}>${objectLimit} log 当前已经存在item个数${total},待导入个数${lines},总数超过${objectLimit}条! ${objectSubType} Run Keyword If "${objectType}"=="ip" and "${objectSubType}"=="${EMPTY}" Set Variable endpoint ... ELSE Set Variable ${objectSubType} ${subfix} Fetch From Right ${fileName} . @@ -139,33 +147,32 @@ ImportObject ... ELSE IF "${subfix}"=="csv" Evaluate (r'${fileName}',open(r"${path}/${filePath}/${fileName}",'rb'),'application/vnd.ms-excel') ... ELSE ${EMPTY} ${data} Create Dictionary objectType=${objectType} - Run Keyword If "${objectSubType}"!="${EMPTY}" Set To Dictionary ${data} objectSubType=${objectSubType} - Run Keyword If "${objectName}"!="${EMPTY}" Set To Dictionary ${data} objectName=${objectName} + Run Keyword If "${objectSubType}"!="${EMPTY}" Set To Dictionary ${data} objectSubType=${objectSubType} + Run Keyword If "${objectName}"!="${EMPTY}" Set To Dictionary ${data} objectName=${objectName} ${file} Create Dictionary file=${binFile} ${response} BaseMultipartPostRequest ${objectUrl}/batch ${data} ${file} ${version} - ${rescode} Set Variable ${response['code']} - Should Be Equal As Strings ${rescode} 200 - [Return] ${rescode} + ${rescode} Set Variable ${response['code']} + Should Be Equal As Strings ${rescode} 200 + [Return] ${rescode} ${objectType} ${response} + ExportObject - [Documentation] - ... 策略对象导出 - ... objectType ip,url等 - ... objectSubType 子类型 - ... objectIds 1,2,3 - ... objectName 字符串 [Arguments] ${objectType} ${objectSubType} ${objectIds} ${objectName} + [Documentation] 策略对象导出 + ... objectType ip,url等 + ... objectSubType 子类型 + ... objectIds 1,2,3 + ... objectName 字符串 Should Not Be Empty ${objectType} ${params} Create Dictionary objectType=${objectType} Run Keyword If "${objectSubType}"!="${EMPTY}" Set To Dictionary ${params} objectSubType=${objectSubType} Run Keyword If "${objectIds}"!="${EMPTY}" Set To Dictionary ${params} objectIds=${objectIds} - Run Keyword If "${objectName}"!="${EMPTY}" Set To Dictionary ${params} objectName=${objectName} - ${response} BaseGetRequestReturnBinary ${objectUrl}/batch ${params} ${version} + Run Keyword If "${objectName}"!="${EMPTY}" Set To Dictionary ${params} objectName=${objectName} + ${response} BaseGetRequestReturnBinary ${objectUrl}/batch ${params} ${version} [Return] ${response} + GetItemNum - [Documentation] - ... 获取策略对象单元总数 - ... [Arguments] ${objectType} ${objectSubType} + [Documentation] 获取策略对象单元总数 ${getTotal} Create Dictionary pageNo=${1} pageSize=${1} Run Keyword If "${objectType}"=="ip" and "${objectSubType}"=="endpoint" Set To Dictionary ${getTotal} itemType=IP ... ELSE IF "${objectType}"=="ip" and "${objectSubType}"=="geo_location" Set To Dictionary ${getTotal} itemType=geo_location @@ -180,49 +187,56 @@ GetItemNum ${total} Run Keyword If "${objectType}"=="fqdn_category" Evaluate ${total} - ${data['total']} ... ELSE Set Variable ${total} [Return] ${total} -CountLines - [Documentation] - ... 获取文件总行数 + +CountLines1 [Arguments] ${file} + [Documentation] 获取文件总行数 ${count} Set Variable ${0} ${openFile} Evaluate enumerate(open(r"${file}",'r')) FOR ${line} IN @{openFile} - ${val} Run Keyword If "${line[0]}"=="0" Set Variable ${line[1]} ELSE Set Variable ${EMPTY} + ${val} Run Keyword If "${line[0]}"=="0" Set Variable ${line[1]} + ... ELSE Set Variable ${EMPTY} + ${val2} Run Keyword If "${line[1]}"=="\n" Set Variable ${line[0]} + ... ELSE Set Variable ${EMPTY} + log ${line} + log "${line[1]}" ${match} Get Regexp Matches ${val} ^--> + #${match2} Get Regexp Matches ${val} ^(\t)*$\n ${len} Get Length ${match} + #${len2} Get Length ${match2} ${count} Run Keyword If "${line[0]}"=="0" and ${len}>0 Set Variable ${count} ... ELSE Evaluate ${count}+1 END [Return] ${count} + PolicProtocolFields - [Documentation] - ... 策略对象生效协议字段查询 + [Arguments] ${policyType} ${protocol} ${objectType} + [Documentation] 策略对象生效协议字段查询 ... policyType策略类型 ... protocol协议 ... objectType对象类型 - [Arguments] ${policyType} ${protocol} ${objectType} ${dict} Create Dictionary - Run Keyword If "${policyType}"!="${EMPTY}" Set To Dictionary ${dict} policyType=${policyType} - Run Keyword If "${protocol}"!="${EMPTY}" Set To Dictionary ${dict} protocol=${protocol} - Run Keyword If "${objectType}"!="${EMPTY}" Set To Dictionary ${dict} objectType=${objectType} + Run Keyword If "${policyType}"!="${EMPTY}" Set To Dictionary ${dict} policyType=${policyType} + Run Keyword If "${protocol}"!="${EMPTY}" Set To Dictionary ${dict} protocol=${protocol} + Run Keyword If "${objectType}"!="${EMPTY}" Set To Dictionary ${dict} objectType=${objectType} ${parmStr} Dictionary-To-QueryParams ${dict} - ${response} BaseFormRequest ${objectUrl}/protocolFields ${parmStr} ${version} - ${rescode} Set Variable ${response['code']} - Should Be Equal As Strings ${rescode} 200 + ${response} BaseFormRequest ${objectUrl}/protocolFields ${parmStr} ${version} + ${rescode} Set Variable ${response['code']} + Should Be Equal As Strings ${rescode} 200 [Return] ${response['data']} + ObjectReference - [Documentation] - ... 策略对象相关性查询 - [Arguments] ${objectId} + [Arguments] ${objectId} + [Documentation] 策略对象相关性查询 ${response} BaseFormRequest ${objectUrl}/reference objectId=${objectId} ${version} - ${rescode} Set Variable ${response['code']} - Should Be Equal As Strings ${rescode} 200 + ${rescode} Set Variable ${response['code']} + Should Be Equal As Strings ${rescode} 200 [Return] ${response['data']} + AppIdTreeSearch - [Documentation] - ... App ID对象树查询 [Arguments] ${referenceObjectId} + [Documentation] App ID对象树查询 ${response} BaseFormRequest ${objectUrl}/appId/tree referenceObjectId=${referenceObjectId} ${version} - ${rescode} Set Variable ${response['code']} - Should Be Equal As Strings ${rescode} 200 - [Return] ${response['data']} \ No newline at end of file + ${rescode} Set Variable ${response['code']} + Should Be Equal As Strings ${rescode} 200 + [Return] ${response['data']} diff --git a/02-Keyword/tsg_bfapi/policy_object/Policy.robot b/02-Keyword/tsg_bfapi/policy_object/Policy.robot index e1bcc8b..c1a2c8e 100644 --- a/02-Keyword/tsg_bfapi/policy_object/Policy.robot +++ b/02-Keyword/tsg_bfapi/policy_object/Policy.robot @@ -119,18 +119,25 @@ ImportPolicy #待导入的策略总数 ${totalNum} Get From Dictionary ${fileJson} totalNum #查询已经导入的非内置策略的数量 - ${totalExists} GetPolicyTotal 2 + ${totalExists} GetPolicyTotal 10 ${calTotal} Evaluate ${totalNum} + ${totalExists} + Connect To Database Using Custom Params pymysql ${mysqlHost} + ${policyLimit} query SELECT cfg_value FROM t_sys_cfg WHERE cfg_name='policy_upper_limit' + ${policyLimit} Set Variable ${policyLimit[0][0]} + ${remaining} Evaluate ${policyLimit}-${totalExists} + log 策略剩余可导入量为:${remaining} + ${testType} Evaluate type($policyLimit) + Disconnect From Database #jira CHON-12导入限制需求支持 - Run Keyword If ${calTotal}>1000000 Fail 当前已经存在策略条数${totalExists},待导入条数${totalNum},总数超过100万条! + Run Keyword If ${calTotal}>${policyLimit} log 当前已经存在策略条数${totalExists},待导入条数${totalNum},总数超过${policyLimit}条! ${binFile} Evaluate (r'import_policy.json',open(r"${path}/${filePath}/${fileName}",'rb'),'application/json') Log ${binFile} ${data} Create Dictionary policyType=${policyType} ${file} Create Dictionary file=${binFile} - ${response} BaseMultipartPostRequest ${policyUrl}/batch ${data} ${file} ${version} + ${response} BaseMultipartPostRequest ${policyUrl}/batch ${data} ${file} ${version2} ${rescode} Set Variable ${response['code']} Should Be Equal As Strings ${rescode} 200 - [Return] ${rescode} + [Return] ${rescode} ${totalNum} ExportPolicy [Documentation] ... 策略导出 diff --git a/04-CustomLibrary/Library/fileOperations.py b/04-CustomLibrary/Library/fileOperations.py new file mode 100644 index 0000000..4029e26 --- /dev/null +++ b/04-CustomLibrary/Library/fileOperations.py @@ -0,0 +1,26 @@ +def CountLines(fname): + count = 0 + with open(fname, 'rb') as f: + for file_line in f: + file_line = file_line.strip() + # print(file_line) + # 空行 + if file_line == b'': + pass + + # 注释 # 开头 + elif file_line.startswith(b'-->'): + pass + + # 代码 + else: + count += 1 + print(fname + '----', count) + # 单个文件行数 + # print(fname,'----count:',count) + return count +def WriteBinary(response,path1): + with open(path1,"wb") as f2: + strb = response + f2.write(strb) +