Python接口测试入门,,接口测试基础篇用几个


接口测试基础篇

用几个简单的案例,带你轻松了解接口测试

首先了解一下接口测试的重要性:

技术图片

接口测试有什么要求呢?

首先需要清晰的接口文档,标准如下:

接口名称接口类型输入参数每个参数名;每个参数类型;每个参数业务含义;每个是否可空;每个字段长度(可选,一般需要提供,有严格要求的字段需特别注明);

输出参数

状态码;

提示信息;

每个参数名,每个参数类型;

每个参数业务含义;

每个字段长度;

接口通用基本要求:(借鉴别人的总结)

返回json字段信息,不可出现 关键字类型,如 object,interface,public,java等各类语言代码中关键字类型涉及金额等信息时应采取加密方式,后端需进行校验,防止通过接口拦截造成损失涉及交易收付款时,后端需进行幂等校验HTTPS方式传输请求方式,一般获取数据是get,提交表单是post信息存取可采取对称加密和非对称加密的结合(可选,也可选一种)接口进行手机号正则验证,字符串和上传文件图片等提前规划大小限制检查数据正确性,每个接口从数据存取数据等是否正确,是否在正确的数据库表取数据等为空等验证一定要做,正确状态码和错误状态码一定全部记录下来,状态码代表的意思等

接下来用几个简单的案例开始接口测试之旅

准备工作:

环境:python3.7版本工具:PyCharmpython官方文档:https://www.python.org/

案例一:发送一个get请求

import requests# 请求的链接url = 'https://dgateway.allhome.com.cn/organization/v1/basic/people/position/dictionaryList?postId=0'# 发送get请求r = requests.get(url)# 请求的状态码 200代表成功status = r.status_codeprint(status)# 请求的内容j = r.json()print(j)

输出结果:

技术图片

案例二:发送一个post请求

import requests# 请求的链接url = 'https://dgateway.allhome.com.cn/organization/v1/basic/people/level/list'# post请求以字典格式传入data = {    "pageInfo": {        "page": 1,        "size": 3    },    "query": {        "postId": ""    }}# 发送post请求r = requests.post(url, data)# 请求的状态码 200代表成功status = r.status_codeprint(status)

输出结果:

技术图片

import requests# 请求的链接url = 'https://dgateway.allhome.com.cn/organization/v1/basic/people/level/list'# post请求以字典格式传入headers = {"Content-Type": "application/json"}data = {    "pageInfo": {        "page": 1,        "size": 3    },    "query": {        "postId": ""    }}# 发送post请求r = requests.post(url, data=json.dumps(data), headers=headers)# 请求的状态码 200代表成功status = r.status_codeprint(status)# 请求的内容print(r.content)

输出结果:

技术图片

思考:对requests获取的原始数据,有几种形式?

https://www.jianshu.com/p/0e0336b370f3

案例三:接口状态码断言

import requests# 请求的链接url = 'https://dgateway.allhome.com.cn/organization/v1/basic/people/position/dictionaryList?postId=0'# 发送请求r = requests.get(url)# 请求的状态码 200代表成功status = r.status_code# 进行接口的状态码断言,等于200则认为通过,不是200不通过if status == 200:    print('用例测试通过')else:    print('测试不通过')    print(status)# 请求的内容j = r.json()print(j)

输出结果:

技术图片

案例四:接口内容断言-正常情况

import requests# 请求的链接url = 'https://dgateway.allhome.com.cn/organization/v1/basic/people/position/dictionaryList?postId=0'# 发送请求r = requests.get(url)# 请求的状态码 200代表成功status = r.status_code# 进行接口的状态码断言,等于200则认为通过,不是200不通过if status == 200:    print('用例测试通过')else:    print('测试不通过')print(status)# 请求的内容j = r.json()# 判断接口返回内容里面,有没有 权证部 内容if '权证部' in str(j):    print('存在此数据')else:    print('不存在此数据')print(j)

输出结果:

技术图片

案例五:接口内容断言-异常情况

判断接口返回内容里面,有没有 ‘权证部测试’ 内容

import requests# 请求的链接url = 'https://dgateway.allhome.com.cn/organization/v1/basic/people/position/dictionaryList?postId=0'# 发送请求r = requests.get(url)# 请求的状态码 200代表成功status = r.status_code# 进行接口的状态码断言,等于200则认为通过,不是200不通过if status == 200:    print('用例测试通过')else:    print('测试不通过')print(status)# 请求的内容j = r.json()# 判断接口返回内容里面,有没有 权证部测试 内容if '权证部测试' in str(j):    print('存在此数据')else:    print('不存在此数据')print(j)

输出结果:

技术图片

讲到这里已经知道如何发送请求,如何使用断言;学习完大家还需要多敲多练。
思考:当url、path、data发生变化每次都需要更改代码是不是很麻烦!有什么办法可以解决吗?
案例六:封装接口-将接口和逻辑代码分开控制**

增加config.py存放接口
# baseurl 一般接口都是分测试接口和正式接口的,只需要修改ip即可baseurl = 'https://dgateway.allhome.com.cn'# 职级字典表接口url_dictionaryList = baseurl + '/organization/v1/basic/people/position/dictionaryList?postId=0'
增加testapi.py
# 发送请求 使用config.来调用想要的接口 调用职级字典表r = requests.get(config.url_dictionaryList)# 请求的状态码 200代表成功status = r.status_code# 进行接口的状态码断言,等于200则认为通过,不是200不通过if status == 200:    print('状态码校验过')else:    print('状态码校验不通过')print(status)# 请求的内容j = r.json()# 判断接口返回内容里面,有没有 权证部 内容# 权证部  增加了一个1if '权证部' in str(j):    print('存在此数据')else:    print('不存在此数据')print(j)

输出结果:

技术图片

练习到这个案例,会发现将接口封装后,每次接口链接变了,只需要修改config文件即可

案例七:封装接口-将接口和逻辑代码分开控制

上面讲到了如何将url与逻辑代码分开控制,但如果是post接口的话,参数也要进行分离

下面我们要对config.py进行修改

# baseurl 一般接口都是分测试接口和正式接口的,只需要修改ip即可baseurl = 'https://dgateway.allhome.com.cn'# 职级字典表接口url_dictionaryList = baseurl + '/organization/v1/basic/people/position/dictionaryList?postId=0'# 查询职级列表接口url_list = {    '接口': baseurl + '/organization/v1/basic/people/level/list',    'headers': {"Content-Type": "application/json"},    'data': {        "pageInfo": {            "page": 1,            "size": 3        },        "query": {            "postId": ""        }    }}

testapi.py修改

import requests# 引入config配置接口的文件import configimport json# 发送post请求,通过config文件获取接口url 和接口的参数 ,如果参数更改了,咱们就修改config文件就可以了url = config.url_list['接口']data = config.url_list['data']headers = config.url_list['headers']r = requests.post(url, data=json.dumps(data), headers=headers)# 请求的状态码 200代表成功status = r.status_code# 进行接口的状态码断言,等于200则认为通过,不是200不通过if status == 200:    print('状态码校验过')else:    print('状态码校验不通过')# 输出状态码print(status)# 因为展示测试的接口没有json,所以只能输出content啦~print(r.content)

输出结果:

技术图片

总结:用到了 字典? 的小知识点,还用到了 引用包 的小知识点(网上资料特别多,不懂的可以自己查阅资料)

这个案例讲完已经学会了使用 config 分开控制接口和逻辑代码,本次课程也就结束了!大家课后要先复习本次课程讲解的内容,查阅相关的资料进行巩固。感谢大家的捧场,希望大家共同学习共同进步!

温馨提示:下一节我们将会学到如何对接口进行封装、引用unittest测试框架进行断言、生成测试报告

Python接口测试入门

评论关闭