数据驱动自动化接口测试
1.测试用例设计
- yaml文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27-
url : http://118.24.3.40/api/user/login # 访问url
method : post # 请求方式
detail : 登录接口-成功用例 # 用例描述
header:
cookie:
is_json : False
data: # 请求数据
username : niuhanyang
passwd : aA123456
check: # 检查点
- sign
- userId
-
url : http://118.24.3.40/api/user/login # 访问url
method : post # 请求方式
detail : 登录接口-失败用例 # 用例描述
header:
cookie:
is_json : False
data: # 请求数据
username : niuhanyang
passwd : aA1234567
check: # 检查点
- 用户名/密码错误
- error_code
2.测试类书写
ddt
ddt是python的数据驱动模块1
2@ddt.ddt # 给测试类添加装饰器
@ddt.file_data # 添加数据驱动数据,被修饰的方法可以通过**XXX获取参数添加用例描述
1
self._testMethodDoc = detail
demo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
@ddt.ddt
class TestClass(unittest.TestCase):
@ddt.file_data(r'../cases/login_case.yaml') # 导入yaml用例文件
def test_interface(self,**test_data):
url = test_data.get('url',None)
method = test_data.get('method',None)
detail = test_data.get('detail',None)
self._testMethodDoc = detail # ※添加用例描述
header = test_data.get('header',None)
cookie = test_data.get('cookie',None)
is_json = test_data.get("is_json",None)
data = test_data.get('data',None)
check = test_data.get('check',None)
if method:
method = str(method).upper()
if method == "GET":
res = requests.get(url=url,params=data,headers=header,cookies=cookie)
elif method == "POST":
if is_json:
res = requests.post(url=url,json=data,headers=header,cookies=cookie)
else:
res = requests.post(url=url,data=data,headers=header,cookies=cookie)
else:
res = "CASE WRONG,CASEDATA:"+url+method+detail+header+cookie+is_json+data
else:
res = "CASE WRONG,CASEDATA:"+url+method+detail+header+cookie+is_json+data
# 比较接口执行结果
for c in check:
self.assertIn(c,res.text,detail+'--测试执行失败,'+c+'检查失败')通过添加测试类到testsuit执行
1
2
3
4test_suit = unittest.TestSuite()
test_suit.addTest(unittest.makeSuite(TestClass))
report = BeautifulReport.BeautifulReport(test_suit)
report.report(description="接口测试报告",filename='report.html')