From b56a9b0c60ee1158bfbdf6615c77394986f26b8a Mon Sep 17 00:00:00 2001 From: 284772894 <284772894@qq.com> Date: Thu, 8 Sep 2016 19:16:20 +0800 Subject: [PATCH] add test param --- .idea/workspace.xml | 439 ++++++++++--------- BLL/Bhttpbase.py | 4 +- BLL/__pycache__/Bhttpbase.cpython-34.pyc | Bin 850 -> 850 bytes COMMON/BaseGoals.py | 2 - COMMON/__pycache__/BaseGoals.cpython-34.pyc | Bin 685 -> 490 bytes COMMON/__pycache__/http_param.cpython-34.pyc | Bin 0 -> 944 bytes COMMON/http_param.py | 21 + COMMON/operateXML.py | 14 +- DAL/Dhttpbase.py | 11 +- DAL/__pycache__/Dhttpbase.cpython-34.pyc | Bin 1349 -> 1367 bytes README.md | 5 + email.ini | 2 +- model/Mhttpbase.py | 5 +- model/__pycache__/Mhttpbase.cpython-34.pyc | Bin 751 -> 783 bytes report.xlsx | Bin 9688 -> 9531 bytes runner_m.py | 38 +- test4.xml | 47 ++ 17 files changed, 350 insertions(+), 238 deletions(-) create mode 100644 COMMON/__pycache__/http_param.cpython-34.pyc create mode 100644 COMMON/http_param.py create mode 100644 test4.xml diff --git a/.idea/workspace.xml b/.idea/workspace.xml index ee1c36c..838eedd 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -27,104 +27,91 @@ - - + + + - - + + - - + + - - + + - + - - - - - - - - - - - - - - + + - - - - - + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + @@ -135,13 +122,6 @@ @@ -193,10 +180,10 @@ true - @@ -221,7 +208,6 @@ - @@ -240,15 +226,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -263,9 +306,9 @@ + - @@ -276,95 +319,95 @@ - + - + - + - + - + @@ -564,17 +607,17 @@ - + - + - + @@ -606,21 +649,11 @@ - - - - - - - - - - - @@ -775,218 +808,222 @@ - + - - - + + - + - - - + + - + - - - + + - + - - - + + - + - - - - - + + - + - - - + + - + - - - - - + + - + - - - + + - + - - + + + + + + + + + + + + + + + + - + - - + + + + + + + + + - + - - + + - + - - - - - + + + - + - - + + - + - + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - + - - - - - + + + - + - - + + - + - - - - - + + + - + - - + + - + - - + + - + - - + + - - + + + diff --git a/BLL/Bhttpbase.py b/BLL/Bhttpbase.py index 235a446..de7ac34 100644 --- a/BLL/Bhttpbase.py +++ b/BLL/Bhttpbase.py @@ -10,4 +10,6 @@ def get(self, url, params={}): return self.mh.get(url, params) def post(self, url, files=None, params=None): - return self.mh.post(url, files, params) \ No newline at end of file + return self.mh.post(url, files, params) + + # def check_param(self): diff --git a/BLL/__pycache__/Bhttpbase.cpython-34.pyc b/BLL/__pycache__/Bhttpbase.cpython-34.pyc index 9dbd34279047908db0db373a7799a9554100d586..03237ce0bfed30369337a4de916b4efb2d2b2afb 100644 GIT binary patch delta 18 acmcb_c8QJi9S<+p8^w#^OEz+PG6MiYiUz6x delta 18 acmcb_c8QJi9S<+pi+AV4n>KQKG6Mie76(rN diff --git a/COMMON/BaseGoals.py b/COMMON/BaseGoals.py index ab68124..81cba90 100644 --- a/COMMON/BaseGoals.py +++ b/COMMON/BaseGoals.py @@ -1,6 +1,5 @@ __author__ = 'Administrator' class Goals(object): - URL = '' # 接收接口url PARAMS = {} # 接收接口参数 RESULT = 'Fail' # 接收测试结果 REALLY_RESULT = "" @@ -9,4 +8,3 @@ class Goals(object): SUCCESS_SUM = 0 ERROR_NUM = 0 CASE_TOTAL = 0 - HEADER = {'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8','User-Agent':'Mozilla/5.0 (Windows NT 6.1; rv:29.0) Gecko/20100101 Firefox/29.0'} \ No newline at end of file diff --git a/COMMON/__pycache__/BaseGoals.cpython-34.pyc b/COMMON/__pycache__/BaseGoals.cpython-34.pyc index c2f8ca40d2fdb4103e6930dcc096743ec5d15651..ff73cbde8596af6d0bcb1b17917e5cb4fe494d3a 100644 GIT binary patch delta 193 zcmZ3>`ihzJ9S<+pE8~md!V@{8(-;{T7#x7O7(}EpFhnsjqyR}KhD;#I%#gy!5XHif z!o(283MSdWBs)V2GeZ;ynB)YLTns5J48fYLw^-ft6LX4hvA88>=G(h-wZRxCkT%;zqfI054`BV0TC;eU7Pwx3Q+y;-Xo)l?l}#hy&)Jc#UT9x>N- zj6>bj$|E)-{MFa`w^~ED+M4&$syB7BqV?$HksEc>GR3j9?k@A_9S@Cl8Wn~<^$zTN zIt%)h&G>UKD-8!%@oKzX9N`V3%Ge+8vp1gh5T3a|JBJMjP%dr|qCh$XG#~{<0fHRLIE9Ny$mlq{2RZQ1Wp5pUWLLl& z@De-@?Y2~DcmP*?vj!*1N;5mNJ3BkyH}j{}j(_a^IvRRJzv;q)PkWGh2TBpWhGtS8 zeS;0dClxr`BNdX0oQ=ZhR z=Q}hf+JCb}3y`%c|-B zoKkV!gd&c(&6}(@U<-3@$+djt0KJ7_NT7UWVt`nofe#8hU@s9fpiTnzl5N~dwCAD? z=#9uY_;?LUx8w%oBGmW<{5VefX|uQF7h3*Z@-r=UEcxCUHaZiQ)4+z6E+@t|1W7%6 zXZ=wzvCa2WovCtYQeR645G9o92=+NyT9Dedy!=r7V^#3hF%)qO4sJv1TkzIR75wX_ zzJepj(bT8H#7B@Jt-VhJPxx3kC_uZy4Pp{;e1~ou&rWWhH=Fboq)R;;mZlij)<m<6=GH zP@NzRgKCOkIFP$Rz{_yA?1Vdypr>CP6czaic6Jz3yW>foApp`3^$Ngb1$wU;I zFeqr@F5IW+l9L(tM8xNb(Q`0M!88Sdmvif~-4?A%jS>f(xOKpmaUOkC_Exm9W?w}E Ji}q9O{{j}|OXmOp delta 405 zcmYk2%}T>S6ot>tOp+%35frV|A|h_$rqo3jf~#)Cg(!t~DS=dMT5Fw*ijpEy5OF&j zU&DuR?NSK(3O<83)rE_5xo7SS=YI3yzxm#Gsq7EG-g}i-?}q#efHo_6G|#l&O$pU0 z;dT#NAeLYs38WSxi2+v|k%Ly`A}XLYBWo%Uc}N9L?7YSfI=%4*q;@g%p&md)x?p^3 ztB^U9P=)7-X<7%AnbdkRMG>rK_CyWFI*`idH8OFfM#|^T?2CGFksHt^396e*v2)*L ztC1(o2zfRk1!6*Mp&GINoZ#-4L`%fH+CPl>V{6K6JaRDQsf|uxAKtlVT2FQx4dro6 zW}gm5{Uno7sKda`WdAx0MoRKXmGhGSoLb0l%E?8dRlaNB%qi5eIhM_p8lNn&lAH%r VVvseG zGL?y;nVBJqb7HNYF4HYe-_o3t%#g~0)LR@rnZ+d_Rx*-#49qYCizl9o7UN<_u>g?ZVPs?EheA#uT?CTVP!p_j~S2v3y|#q#Kkcam0iRb-BVZ@QrH+;7(iqy6GJmI zLlnovW<6!bTb#b7IVG7Pl?AEENctI=VFu(*ycaFN!qCjX5XHri$_-}lO!j9?WaOQ^ zkh(`%ho)yLG3?sF2g$z^b9=0Fv(E9Eqd#>y*EpABN^O&5Od*I8Nl=gN^Z%AW zDgHdAnnYZD=Yh;}#}VUSmlRpd!gJev5o--M*9;@yT-MXn#nRBQ%n~cX*C6R46W-Zo zdrFA9(CSRnp$rVwsPHbq)tRjJD#4$5t8Ee|<3T`uP#Ud!-$qxhC(5M{VV!3tJ(W|?}8V0ymaUPi26EE ze)@~LzIkcIzUS_S9~t>>)7zqg_cVN}4B=*Ue%EJrh}QpNX+UZgU)^L97Br=2u;uf) zwLwlPEarTLQ>&_I?fm4|xUb`}feXI~yoJ2=?wx=M0Dox-+p-%-EBO7&4$q9qEw5iv6@6@8000MkD;f^4OXq?DY9OAq(JXK6oW zjnWYTqnk-?hCm${S$zfU1!f}p;!^KwnOtyKK}%3gZx+zf{VDUh^x~91g0cjW{aMg^ zn^f2Asi%|-oJ7yBDz9OFSREo{*;Gn z8A!8A%9*`RzWOr3@OD%4MoHwxLuFAq-QSke3BU=uF%VtbosO{M+yW+{k-K6`D%SM{6&e=pJ^ki*cDWf8G)g#~@)S7-Y zYm)8~4w0~FbI{9786u5st@RB-Q8pFQ_Ham+J7!F&IKZ+ni(uaK8K&4Bvq@P%_CoMr zAM#9j*J@Kp@J10(+nT5v8wWt_7YO)?qhI?_``G8&&zeR*Dz_#&#`*1h5pXDI?La& zIpMFKC`2kZOg3jCMBTnz;1|A|&Sp4%BNcU5_e{3_5L?6)mTz5|Xgd$&doI!Fq0?Au zxVQ>g#8IFEV-eIwyUfsDxxQc&lPpxKXV>|p}?4+PO zC*rDBrLrC*26NFwjBa!qK;A7%?qt@-W`-edWB4B}Jd>IW+drsvD-1B*bhA9AoEyBU zs2AgItHEZW*Y>N8M__w|4Uq0a%MtGg;)mC(>yUVGobg^KqmDCvT56h)oBFM%VaHp8 za4dI1-9v1A-=VG`k8xJPjLUJTV+=y+b9p(+h>M?4X8-?N7^1b1-y6m08u|eb01&_c zAj#53kAj1&_%1Q(8#ID@$Oc-DM}`W;ptzQD>{g;Z zNA4m30MH*S^^#N@j2zbzgpuRXqNZR_Tvo+lC#kP6vfKi{7xkW9=NQd77nA*=01i%l j3zw%NvBF%NDproihH8b?;IcRlGo$8Vb@;UvzPtVh>cKN{ delta 2154 zcmZuyc{tSj8vkJ!`!d5BOSUnxL?w!lkjdD_L}iX+8B3)@jckQslBJszosp%nOJ|Jj z8jSsnjHx&SwW7IpUn}puqXg1%8&?Bs>CL* z2|W9(B5~4RVFJboUhdpPE!G;#g&jmZEERHZq-6v_GJE-9U`iRPqFl2v`v-5^3YCmI zbW|uAJspG*-*V+zxPOtdiYcJiA3LkTXX&pML=LwyB8iMh_G75IVNiZ3^;~G0O$ti3 zJcGLLK#>K(K+@o>m%v>1JXFK=jd_oywK?s0Y> ztX;jPmCJ!E4xO)Y=IjZzf7KY@fvDuXiuZGX8zD)|a z#u`ln7X~an@0cV^J*jD5d)IO67(VD}Vd7zwRd;ffJPX!nGXDhMldwtbdpvz3gBzdGUjr92^iG!((+#7UoJv~n4FsN?9*-JN_t9bP1P z>1*z5?&Red($y0)b}#bwK%4Vt&@Wjp9cp@WUXQIFw@D(*&&jp%wUTN~m&dj&NW946 ztyzYT`x>$)v5|MUsF#>v;fSqUzYza15k9jRox9_E>wclbY={*C{~?XRO>^6~6b zi9E51R3!0&9zGkM3|!S+bt5MpszCg%^$E-60??WfG|IdFRkV z)OZ~4=115xJ+ShZ_Ano>Cbb7eo*9w}qxu))tf^_iy3c-4wIw=CNv#VX_+T$|?w-MG zess5?n5@0>Cy{c~%T!z!rRbM_vtcWmXVZwSOl8hFtlk~C!;BG?LO0I6QONo5`{vCw z^Y*tx$B?T=9?}!1k{5D+ruv-IqU&DRbp+Y4y)iYv$z*kj=c!jd6U_D-wQ!tJ|`FBHRplztLHOpwoC! zrH4A5(Pe7?p~V&i4^Npz1R4|-(k`8tzy#sg`TU}dCLwF-gc>LR7zwXBuAhu7AP zf%Ndv#J7`|V}BxNZP2RU3rV!Q>QsUuPDOe~2P6VZvrJbZUEDfHhkAzU3;&vryu`T) zHa{YHPaT{PC}w(t*k4<272Zv~vlv<9pn z#X%%a#<6Z}%uV9Pw}dqlVm&m*R3iV1|C4pHn{l{%3;5ExRgrQ#-`WL z{e&63Fj89HVuG%hcX@#u_+%amxPKs|D}ji6vA9owD;MS9_;5<+>1GQZEPl6CRMhgC z>!BON900vemg$UmbNbMt@pxkqbENZQgjtMlZZr~qXI)~`r?X?V>XC;gx<}}F#ZSGZ$&?GeE%hK=Fuw^(8#Rcc{ZuHf#|lfckV%cINbaY^TF2LXT}${Ofv{o8G&| zmS2PU(aN#UiDJ~5EF#qXy7tq;c0*p00yp#9-qbC6unt)W0L(=IKwhAZ z{~UT!p1=&o2Vo-c;gJUd!o&ApyA+0T5fWAe{;Q(9dls-U!T_M~4^@ElqyPx%jRJJv z_XLj!p5!F~K}rk&px+Saq;MU$&2~#v-H$0Af(O0C0YK)PoYP7Ga4qaWWK?X}xyb+1 z4~eCtCOiToVPHyf-&H0lAk>6tBx8i?&P1FA7L#-yVW7EP@u(e6qd`!~P|%sqHx(C2 ewTMGIIm2c7YW0E`;(v0cNLz>_Vo$ZViGKseW34y< diff --git a/runner_m.py b/runner_m.py index 98a4170..09c7bf3 100644 --- a/runner_m.py +++ b/runner_m.py @@ -9,14 +9,16 @@ from MODEL import Memail from BLL import BgetEmail,BsendEmail from BLL import BexcelReport as excel -from COMMON import operateXML +from COMMON import operateXML as om from BLL import Bhttpbase from MODEL import Mhttpbase from BLL import Bresult, BresultDetail from MODEL import Mresult, MresultDetail +from COMMON import http_param as hp import json + mresult = Mresult.result() mresult.info = [] def get_email(): @@ -31,7 +33,7 @@ def excel_report(wd, data, worksheet_init, worksheet_detail): ex.detail(worksheet_detail, data[1]) def get_api(): - return operateXML.getXML("d:\\app\\auto_http34_test\\test3.xml", Mhttpbase.BaseHttp()) + return om.getXML("d:\\app\\auto_http34_test\\test4.xml", Mhttpbase.BaseHttp()) def configHttp(httpbase): return Bhttpbase.ConfigHttp(httpbase) @@ -58,14 +60,15 @@ def function(self): response = "" if self.index == 1: if gm[self.index]["method"] == "POST": - response = self.config_http.post(url=go.URL, params=go.PARAMS) + response = self.config_http.post(url=gm[self.index]["url"], params=hp.str__post_param(gm[self.index]["param"])) go.REALLY_RESULT = eval(response) hope = eval(self.hope) # temp = testJson.compareJson(hope, go.REALLY_RESULT, gm[self.index]["isList"]) temp = check.compare(hope, go.REALLY_RESULT) if temp: - go.LOGIN_KY = gm[1]["login"] - go.LOGIN_VALUE = go.REALLY_RESULT["content"][0][go.LOGIN_KY] + go.LOGIN_KEY = gm[self.index]["login"] + print(go.LOGIN_KEY) + go.LOGIN_VALUE = go.REALLY_RESULT["content"][0][go.LOGIN_KEY] go.RESULT = 'Pass' go.SUCCESS_SUM += 1 else: @@ -75,17 +78,17 @@ def function(self): if gm[self.index]["login"] != "0": go.PARAMS[go.LOGIN_KEY] = go.LOGIN_VALUE if gm[self.index]["method"] == "POST": - response = self.config_http.post(go.URL, go.PARAMS) + go.PARAMS = hp.str__post_param(gm[self.index]["param"]) + response = self.config_http.post(gm[self.index]["url"], go.PARAMS) if gm[self.index]["method"] == "GET": - response = self.config_http.get(go.URL) + go.PARAMS = hp.str_get_param(gm[self.index]["param"][0], go.PARAMS) + response = self.config_http.get(gm[self.index]["url"], go.PARAMS) go.REALLY_RESULT = eval(str(response)) hope = eval(self.hope) - # temp = testJson.compareJson(hope, go.REALLY_RESULT, gm[self.index]["isList"]) temp = check.compare(hope, go.REALLY_RESULT, gm[self.index]["isList"]) if temp: go.RESULT = 'Pass' go.SUCCESS_SUM += 1 - # except AssertionError: else: go.RESULT = 'Fail' go.ERROR_NUM += 1 @@ -95,35 +98,30 @@ def function(self): def get_test_suite(index): test_suite = unittest.TestSuite() hope = gm[index]["hope"] # 预期值 - test_suite.addTest(TestInterfaceCase("function", hope,index)) + test_suite.addTest(TestInterfaceCase("function", hope, index)) return test_suite # 运行测试用例函数 def run_case(runner): case_list = httpbase.No case_list = eval(case_list) # 把字符串类型的list转换为list - temp_case = "" if len(case_list) == False: #判断是否执行指定的用例ID temp_case = gm for index in range(1, len(temp_case)): - go.URL = gm[index]['url'] - go.PARAMS = gm[index]["params"] test_suite = get_test_suite(index) runner.run(test_suite) # 记录运行结果 - mresult.info.append(json.loads(json.dumps(resultInfo(MresultDetail.resultInfo(), t_id=gm[index]["id"], t_name=gm[index]["name"], t_url=gm[0]["host"] + gm[index]["url"], - t_param=gm[index]["params"], t_actual=go.REALLY_RESULT, t_hope=gm[index]["hope"], t_result=go.RESULT, + mresult.info.append(json.loads(json.dumps(resultInfo(MresultDetail.resultInfo(), t_id=gm[index]["id"], t_name=gm[index]["name"], t_url=gm[0]["host"] +"/" + gm[index]["url"], + t_param=str(go.PARAMS), t_actual=go.REALLY_RESULT, t_hope=gm[index]["hope"], t_result=go.RESULT, t_method=gm[index]["method"]).to_primitive()))) else: for i in case_list: for j in range(1, len(gm)): if str(i) == gm[j]['id']: - go.URL = gm[j]['url'] - go.PARAMS = gm[j]["params"] test_suite = get_test_suite(j) runner.run(test_suite) - mresult.info.append(json.loads(resultInfo(MresultDetail.resultInfo, t_id=gm[j]["id"], t_name=gm[j]["name"], t_url=gm[0]["host"] + gm[0]["url"], - t_param=gm[j]["params"], t_actual=go.REALLY_RESULT, t_hope=gm[j]["hope"], t_result=go.RESULT, + mresult.info.append(json.loads(resultInfo(MresultDetail.resultInfo, t_id=gm[j]["id"], t_name=gm[j]["name"], t_url=gm[0]["host"] +"/"+gm[0]["url"], + t_param=str(go.PARAMS), t_actual=go.REALLY_RESULT, t_hope=gm[j]["hope"], t_result=go.RESULT, t_method=gm[j]["method"]).to_primitive())) # 运行测试套件 @@ -140,8 +138,6 @@ def run_case(runner): worksheet2 = workbook.add_worksheet("测试详情") data = json.loads(json.dumps(result(mresult, test_date=str(sum_time) + "毫秒", test_sum=go.CASE_TOTAL, test_failed=go.ERROR_NUM, test_version="v2.2", test_pl="python3", test_net="本地连接", test_name=gm[0]["title"], test_success=go.SUCCESS_SUM, info=mresult.info))) - print("shikun") - print(data) excel_report(workbook, data, worksheet, worksheet2) # 发送email diff --git a/test4.xml b/test4.xml new file mode 100644 index 0000000..dffdae5 --- /dev/null +++ b/test4.xml @@ -0,0 +1,47 @@ + + + 导购码接口测试 + dgm.boweixin.com + 80 + [] + + + account + 18576759587 + 1 + + + password + 222222 + 1 + + + type + 0 + 1 + + 0 + 1001 + 登陆 + POST + Login + {"appStatus":{"errorCode":0,"message":"操作成功"},"content":[{"user_sex":0,"fk_user_city":440300,"user_id":30,"nickname":"18576759587","user_phone":"18576759587","head_picture":"http:\/\/dgm.boweixin.com\/","has_finance":1,"user_state":1}]} + user_id + 0 + + + + lookerId + 2 + 1 + + 1002 + 个人主页 + GET + GetPersonalHomePage + {"appStatus":{"errorCode":0,"message":"操作成功"},"content":[{"business_name":"坤达点子","notice_img":"\/product\/20160718184134_321.jpg","user_type":1,"user_id":2,"goods":[{"good_price":45211.0,"good_id":12,"good_name":"艾欧","banner_picture1":"\/product\/20160719165135_8977.png"},{"good_price":199.0,"good_id":14,"good_name":"麒麟瓜1","banner_picture1":"\/product\/20160720102028_5352.jpg"},{"good_price":452.0,"good_id":6,"good_name":"实力产品","banner_picture1":"\/product\/20160718165448_2602.png"},{"good_price":99898.0,"good_id":11,"good_name":"越南芒果","banner_picture1":"\/product\/20160720100057_5877.jpg"}],"shop_img":"\/product\/20160718120144_3196.jpg","head_picture":"http:\/\/dgm.boweixin.com\/\/product\/20160718134528_4744.jpg","notice_id":1}]} + 1 + 1 + + + \ No newline at end of file