生成用例脚本如下:
#coding=utf-8
'''
作者:刘琳泽
功能:自动生成pyunit框架下的接口测试用例
环境:WingIDE5.1.10-1 python3.5.1
用法:将用户给的参数处理成如下格式,然后调用模块类生成函数,并将参数传入即可
parameters=["Testcase_cartInformation",
"/cart/inforinformation",
[
{"TestcaseName":"cart_information测试1","BusinessParas":{},"judgePara":"200",
"testcase":"CartInformation200"},
{"TestcaseName":"cart_information测试2","BusinessParas":{"aaa":"bbb"},"judgePara":"400",
"testcase":"CartInformation400"}
]
]
modelClassCreate(parameters)
'''
import
os
,
sys
from
string
import
Template
#动态生成单个测试用例函数字符串
def
singleMethodCreate
(
MethodList
,
interfaceNamePara
)
:
code
=
Template
(
'''\n def test${testcase}(self):
u"""${testcaseName}"""
start=datetime.datetime.now()
results = requests.post(self.url('${interfaceName}'),${businessParas})
result=Frame_Result.ResultProcess(results)
print (result)
end=datetime.datetime.now()
print ("case time:"+str((end-start).microseconds/1000000.0))
'''
)
string
=
code
.
substitute
(
testcase
=
MethodList
[
"testcase"
]
,
testcaseName
=
MethodList
[
"TestcaseName"
]
,
interfaceName
=
interfaceNamePara
,
businessParas
=
MethodList
[
"BusinessParas"
])
return
string
#拼接单个的测试用例函数字符串为完整字符串并传回主函数
def
methodCreate
(
MethodParaList
,
interfaceNamePara
)
:
string
=
""
for
MethodPara
in
MethodParaList
:
string2
=
singleMethodCreate
(
MethodPara
,
interfaceNamePara
)
string
=
string
+
string2
return
string
#生成测试用例类函数字符串
def
modelClassCreate
(
parameters
)
:
modelCode
=
methodCreate
(
parameters
[
2
]
,
parameters
[
1
])
code
=
Template
(
'''#coding: utf-8
"""
作者:刘琳泽
功能:待执行的接口测试用例
环境:WingIDE5.1.10-1 python3.5.1
用法:通过框架自动触发调用
"""
import unittest,requests,datetime,sys
from RunCommon import *
from RunConfig import *
class ${className}(unittest.TestCase):
u"""待测试接口:${interfaceName}"""
def setUp(self):
self.domain = TestcaseConfig.BaseURL
def tearDown(self):
pass
${model}
def url(self, path):
return self.domain + path
'''
)
fileStr
=
code
.
substitute
(
className
=
parameters
[
0
]
,
interfaceName
=
parameters
[
1
]
,
model
=
modelCode
)
f
=
open
(
parameters
[
0
]
+
".py"
,
'w'
,
encoding
=
'utf-8'
)
f
.
write
(
fileStr
)
f.close()
生成的用例文件内容如下:
#coding: utf-8
"""
作者:刘琳泽
功能:待执行的接口测试用例
环境:WingIDE5.1.10-1 python3.5.1
用法:通过框架自动触发调用
"""
import
unittest
,
requests
,
datetime
,
sys
from
RunCommon
import
*
from
RunConfig
import
*
class
Testcase_cartInformation
(
unittest
.
TestCase
)
:
u"""待测试接口:/cart/inforinformation"""
def
setUp
(
self
)
:
self
.
domain
=
TestcaseConfig
.
BaseURL
def
tearDown
(
self
)
:
pass
def
testCartInformation200
(
self
)
:
u"""cart_information测试1"""
start
=
datetime
.
datetime
.
now
(
)
results
=
requests
.
post
(
self
.
url
(
'/cart/inforinformation'
)
,
{
})
result
=
Frame_Result
.
ResultProcess
(
results
)
print
(
result
)
end
=
datetime
.
datetime
.
now
(
)
print
(
"case time:"
+
str
((
end
-
start
)
.
microseconds
/
1000000.0
))
def
testCartInformation400
(
self
)
:
u"""cart_information测试2"""
start
=
datetime
.
datetime
.
now
(
)
results
=
requests
.
post
(
self
.
url
(
'/cart/inforinformation'
)
,
{
'aaa'
:
'bbb'
})
result
=
Frame_Result
.
ResultProcess
(
results
)
print
(
result
)
end
=
datetime
.
datetime
.
now
(
)
print
(
"case time:"
+
str
((
end
-
start
)
.
microseconds
/
1000000.0
))
def
url
(
self
,
path
)
:
return
self
.
domain
+
path