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 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -534,19 +577,19 @@
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
@@ -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