接口自动化测试
学习资料(一):
使用postman+newman+python做接口自动化测试
通过postman+newman+python可以批量运行调试接口,达到自动化测试的效果。
1、postman安装与使用
2、newman安装与使用
安装Newman
newman是为Postman而生,专门用来运行Postman编写好的脚本; 使用newman,你可以很方便的用命令行来执行postman collections
- cnpm install newman --global #安装newman
- npm install -g newman-reporter-html #安装html
验证安装成功:
-
newman -v
官方帮助文档地址:
https://www.npmjs.com/package/newman
1)需要安装nodejs,并配置好环境
2)打开控制台,运行:npm install -g newman
3)校验是否安装成功,运行:newman --version
Newman 执行脚本
a)
newman run <collection-file-source> [options]
run 后面跟上要执行的json文件或者URL(json 和 URL 都由postman导出生成),再后面跟一些参数,例如环境变量,测试报告,接口请求超时时间等等。最后给两个完整的例子做参考:
newman run D:/Buddy_Product_Enviroment.postman_collection.json --reporters cli,html,json,junit --reporter-json-export D:/jsonOut.json --reporter-junit-export D:/xmlOut.xml --reporter-html-export D:/htmlOut.html
b)
1.导出脚本,选中合集后右键点击-Export
2.进入到导出的脚本的路径下执行命令:newman run 执行顺序.postman_collection.json -r html
3.运行完之后,打开路径可以看到生成了html的结果
集成到jenkins
1.可以查看之前写的一篇通过tomcat的方式安装jenkins:https://www.cnblogs.com/zengxuejie/p/13626723.html
2.进入Jenkins构建一个项目:postman_api
3.进入项目的配置页面,构建-Execute Windows batch command.然后输入命令,这个命令就是在cmd里执行的命令,保存。
4.保存后,直接构建项目,运行完成。
3、使用python脚本执行newman
# coding=utf-8
import time
import os
class postmanApiTest:
#运行postman生成报告
#通过newman
def postman(self):
jSONfname = 'D:/htmlOut' + time.strftime('%Y-%m-%d', time.gmtime())+'.html'
# cmd = 'newman run D:/Buddy_Test_Enviroment.postman_collection.json --reporters cli,html,json,junit --reporter-html-export '+jSONfname
cmd='newman run D:/Buddy_Product_Enviroment.postman_collection.json --reporters cli,html,json,junit --reporter-json-export D:/jsonOut.json --reporter-junit-export D:/xmlOut.xml --reporter-html-export D:/htmlOut.html'
os.system(cmd)
print('------------------------------------------------------------')
print(jSONfname)
if os.path.isfile(jSONfname):
return jSONfname
print(jSONfname)
else:
return False
if __name__ == '__main__':
a=postmanApiTest()
a.postman()
学习资料(二)
简单实现接口自动化测试(基于python+unittest)
优化 第二版
接口调用异常处理,增加try,except处理,对于返回response.status_code,返回200进行结果比对,不是200数据异常信息。
#!/usr/bin/env python
#coding: utf-8
'''
unittest merchant backgroud interface
@author: zhang_jin
@version: 1.0
@see:http://www.python-requests.org/en/master/
'''
import json
import traceback
import requests
url = "http://cpright.xinhua-news.cn/api/match/image/getjson"
querystring = {
"category": "image",
"offset": "0",
"limit": "30",
"sourceId": "0",
"metaTitle": "",
"metaId": "0",
"classify": "unclassify",
"startTime": "",
"endTime": "",
"createStart": "",
"createEnd": "",
"sourceType": "",
"isTracking": "true",
"metaGroup": "",
"companyId": "0",
"lastDays": "1",
"author": ""
}
headers = {
'cache-control': "no-cache",
'postman-token': "e97a99b0-424b-b2a5-7602-22cd50223c15"
}
try:
#Post接口调用
response = requests.request("POST", url, headers=headers, params=querystring)
#对http返回值进行判断,对于200做基本校验
if response.status_code == 200:
results = json.loads(response.text)
if results['total'] == 191:
print "Success"
else:
print "Fail"
print results['total']
else:
#对于http返回非200的code,输出相应的code
raise Exception("http error info:%s" %response.status_code)
except:
traceback.print_exc()
学习资料(三)
接口自动化测试框架:python+requests+pytest+allure实现(CSDN)
众所周知,目前市面上大部分的企业实施接口自动化最常用的有两种方式:
1.基于工具类的接口自动化,如:
Postman+Newman+Jenkins+Git/svn
Jmeter+Ant+Jenkins+Git/svn
2.基于代码类的接口自动化,如:
Python+Requests+Pytest+Allure报告定制
待完善......