接口基础
1、http接口熟悉
2、常见接口介绍
前端和后端的桥梁,后端通过接口获取前端数据
接口组成
接口分类:get/post/put/delete
测试接口工具:postman/Fiddler/soupUI/jMeter/LoadRunner/senium
3、接口工具使用
4、常见接口基础面试
接口测试和功能测试区别:
都是在模拟用户的操作,只不过没经过前端
网络知识/代码能力/
常见接口类型:post/put/get/delete
get:以问号分割,=前面是参数,后面是数据
post:webform
如何抓取不同类型的接口:
抓取手机的接口:Fiddler及设置
接口开发
django—get post
搭建django环境
安装:pip install django
离线安装 python setup.py install
django下载
django创建APP应用:cmd–进入指定目录–python manage.py startapp name
get和post区别
json形式
requests
安装 pip install requests
遇到问题:
1、使用request报错 requests.exceptions.SSLError: HTTPSConnectionPool(host=‘www.zhihu.com’, port=443):
res=requests.get(url,verify=False)
2、无法访问某些网站
需要添加User-Agent 用户代理(也叫定制请求头)
#该字段可以从正常访问时的抓包工具中获得,或者从浏览器中查看
new_headers={
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36"
}
res=requests.get(url,headers=new_headers,verify=False)
3返回json数据时格式问题
return json.dumps(res.json(), indent=2, sort_keys=True)
Unnittest与接口测试结合
常见面试题:
如何使用python开发测试框架:
所有使用过的包
python+requests(接口)+Unittest(case管理)+HTMLTestRunner(生成测试报告)+excel/Mysql(管理数据存储)+持续集成/批处理
如何管理case
Unittest(有依赖的case)
简述case执行
有依赖情况/命名排序顺序执行/
如何解决case依赖
定义全局变量/
如何生成测试报告 HTMLTestRunner
Unittest使用
安装:一般python自带,可以cmd–import Unittest检测
# coding:utf-8
import unittest
from BaseFile.demo01 import RunMain
import HTMLTestRunner
# 固定unittest.TestCase
class TestMethod(unittest.TestCase):
# 类方法只需要执行一次需要注解 @classmethod
# @classmethod
# def setUpClass(cls):
# print('before class\n')
# @classmethod
# def tearDownClass(cls):
# print('after class')
# //测试方法执行之前执行
# def setUp(self):
# run = RunMain()
# print("setUp")
# def tearDown(self):
# print('teardown')
# case必须以test开头
def test_01(self):
#post
run = RunMain()
url = "http://task.browser.360.cn/online/setpoint"
data = {
'stamp': '1589784096',
'qt': 'Q = u = 360H2553395671 & n = & le = & m = ZGH4WGWOWGWOWGWOWGWOWGWOBGtm & qid = 2553395671 & im = 1t01923d359dad425928 & src = 360se & t = 1T = s = d432285a84c131208d832da5d19838aa & t = 1589187754 & lm = 0 - 1 & lf = 2 & sk = 35aa4fe29022e9aef2c12ae63fcb5d3a & mt = 1589187754 & rc = & v = 2.0 & a = 1',
'verify': '1d7dfed5fc6f93ac96e4f2503209d2b2'
}
res=run.run_main(url,'POST',data)
# 若不成功,报错测试失败
# self.assertEqual(1001,1001,"测试失败")
# self.assertNotEqual()
# self.assertTrue()
# 全局变量
# globals()['userid']='1000999'
# print("test01")
# 跳过该case
# @unittest.skip('test_02')
def test_02(self):
# get
run = RunMain()
url = 'http://127.0.0.1:8000/login/?username=hhh&mobile=123&data=2017'
data = {
'username': 'hhh',
'mobile': '123',
'data': '2017'
}
res = run.run_main(url, 'GET', data)
print(res)
print("test02")
# if __import__()
# unittest.main()
# TestMethod().test_01()
if __name__ == '__main__':
# 容器
# suite=unittest.TestSuite()
# suite.addTest(TestMethod('test_01'))
# unittest.TextTestRunner().run(suite)
# unittest.main()
filePath="./report/htmlreport.html"
fp=open(filePath,'wb')
suite = unittest.TestSuite()
suite.addTest(TestMethod("test_01"))
suite.addTest(TestMethod("test_02"))
runner=HTMLTestRunner.HTMLTestRunner(stream=fp,title="this is first report")
runner.run(suite)
代码运行结果
HTMLTestRunner
安装及常见问题
见https://blog.csdn.net/balabalabubu1/article/details/106196682
Requests的引入使用
断言
case的管理
从设计到开发接口测试框架
mock 代码实现fiddler功能
安装:pip install mock
def mock_test(mock_method,request_data,url,method,response_data):
mock_method = mock.Mock(return_value=response_data)
res=mock_method(url,method,request_data)
return res
设计框架
工具类封装
基类封装
调试错误
数据处理
回写测试结果
解决数据依赖
结果统计
邮件服务
发送报告
常见接口测试技术
操作数据库
MySQL-python
python setup.py install
import MySQLdb
操作cookie
集成环境Jenkins