从零开始,轻松实现Python接口自动化测试(基于PyCharm)
2023-12-13 03:51:04
1.接口清单整理
(1)请求:
- 请求URL
- 请求方法
- 请求参数
- 请求报文
(2)响应
- 状态码
- 响应数据
2.用例设计
(1)单接口测试用例
- 模板:id、模块、接口名称、请求URL、用例名称、请求方法、请求参数类型、请求参数、预期结果、、备注
- 注意:单接口颗粒度放的比较小(以测试数据为颗粒度)
(2)多接口测试用例
- 模板:id、模块、接口名称、请求URL、用例名称、请求方法、请求参数类型、请求参数、预期结果、、备注
- 注意:多接口颗粒度以每个接口为基础,每个接口内所设计的数据可以通过参数化来解决
现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:310357728【暗号:csdn888】
3.测试用例转化为代码实现
工具:Pycharm
项目搭建-自动化测试目结构
api:基于项目模块,一个模块建立一个模块文件
case:业务层的代码,基于unittest框架去执行test方法
data:测试数据、测试的预期结果、参数化 存储文件
report:生成的报告
tools:如果中间使用第三方工具,就把第三方工具放在里面
run_suit.py:运行入口,运行测试套件,执行用例,生成报告
(1)接口对象层封装(api)
以手机验证登陆为例
api_login.py
# 导包:
import requests
# 新建类:
class ApiLogin(object): #类名:以大驼峰的形式把模块名称搬进来
# 新建方法:
def api_post_login(self,url,mobile,code):
# headers定义:
headers={“Content-Type”:“application/json”}
# 定义data报文:
data={“mobile”:mobile,“code”:code}
# 调用post并返回响应对象:
return request.post(url,headers=headers,json=data)
#url、mobile、code最后都需要从data数据文件读取出来,做参数化使用,所以这里使用动态传参
(2)接口业务层实现(case)
test_login.py
# 导包:
import unittest
from api.api_login import ApiLogin
# 读取数据:
def get_data():
data=ReadJson("login.json").read_json()
arrs=[]
arrs.append(data.get("url")
data.get("mobile")
data.get("code")
data.get("except_result")
data.get("status_code"))
retrn arrs
# 新建测试类:
class TestLogin(unittest.TestCase):
# 新建测试方法:
@parameterized .expend(get_data())
def test_login(self,url,mobile,code,except_result,status_code):
# 调用登陆方法:
s=ApiLogin().api_post_login(url,mobile,code)
# 断言 响应信息及状态码:
self.assertEquals(“except_result”,s.json()[‘message’] )
self.assertEquals(status_code,s.status_code )
if _name_=='_main_'
unittest.main()
(3)登陆数据json编写(data)
login.json
{
url:“...”
mobile:“...”
code:“...”
except_result:“...”
status_code:“...”
}
(4)读取json工具(tools)
read_json.py
# 导包:
import json
# 打开json文件并获取文件流(使用函数进行封装、使用参数替换静态文件名):
class ReadJson(object):
def _init_(self,filename)
self.filepath="../data/"+filename
def read_json(self):
with open(self.filepath,"r',encoding="utf-8") as f:
return json.load(f) #调用load方法加载文件流
if _name_=='_main_'
datas= ReadJson(“login.json”).read_json()
# #新建空列表,添加读取json数据
arrs=[]
arrs.append(data.get("url")
data.get("mobile")
data.get("code")
data.get("except_result")
data.get("status_code"))
print(arrs)
(5)运行主入口实现
run_suite.py
# 导包:
import unittest
import time
from tools.HTMLTestRunner import HTMLTestRunner
#第三方工具生成HTMLTestRunner生成测试报告, 前面是模块名称后面是类名,
# 组装测试套件:
suite=unittest.defaultTestLoader.discover(“./case”,pattern=“test.py”)
# 指定报告存放路径及文件名称:
file_path=“./report/{}.html”.format(time.strftime(“%Y_%m_%d_%H_%M_%S”))
# 运行测试套件并生成测试报告:
with open(file_path,"wb") as f:
HTMLTestRunner(stream=f).run(suite)
END今天的分享就到此结束了!点赞关注不迷路!
文章来源:https://blog.csdn.net/MJH827/article/details/134806730
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!