python+request实现接口-小结

1、接口测试框架:

2、api包内封装api接口,一个模块一个文件;

3、script包内,所有测试脚本,同样一个模块一个文件

3、客户模块API接口封装:登陆接口模块完成后,新增一个客户查询模块,另加一个文件query.py。注意get请求中参数格式params=params

python 复制代码
import yxf_p01.app
import requests

class queryAPI():
    #初始化url地址
    def __init__(self):
        self.getAllQuery_url = yxf_p01.app.BASE_URL+"/iCloud-rest/channel-manager/customers/homeCount?"
        self.get_project_url= yxf_p01.app.BASE_URL+"/iCloud-rest/channel-manager/projects/options"

    #查询全部客户模块的统计数据
    def get_query(self,session,reporterId,projectId=''): #项目id默认为空,设定默认值
        #参数-响应-返回
        data={"reporterId":reporterId,"projectId":projectId}
        response=session.get(self.getAllQuery_url,params=data)
        return response

    #查询项目数据
    def get_project(self,session,tenantId,teamId,allProjects='1'):
        params={"tenantId":tenantId,
                "teamId":teamId,
                "allProjects":1
                }
        response=session.get(self.get_project_url,params=params)
        return response

4、客户模块脚本测试编写:新增一个query.py文件为客户查询模块测试脚本。另外登陆的账号密码可以写在app.py全局变量文件中,方便全局更改

python 复制代码
import unittest
from yxf_p01 import app
from yxf_p01.api.loginAPI import loginAPI
from yxf_p01.api.queryAPI import queryAPI
import yxf_p01.app
import logging,time,requests
from yxf_p01.utils import assert_utils

class query(unittest.TestCase):
    def setUp(self) -> None:
        #实例化登陆、查询,创建requests连接
        self.login_api=loginAPI()
        self.query_api=queryAPI()
        self.session=requests.session()
    def tearDown(self) -> None:
        #关闭连接
        self.session.close()
    #用例1成功查询全部列表统计数据
    def test001_get_query_success(self):
        #参数-接口调用-断言
        # 登陆01
        response = self.login_api.getLoginAccout(self.session, app.LOGIN_username, app.LOGIN_password)
        logging.info("login response = {}".format(response.json()))
        assert_utils(self, response, 200, 200, '获取账号列表')
        self.tenantId = response.json().get('data')[0]['tenantId']
        # 登陆02
        response = self.login_api.getLogin02(self.session, self.tenantId, app.LOGIN_username, app.LOGIN_password)
        logging.info("login sucess response={}".format(response.json()))
        assert_utils(self, response, 200, 200, '登录授权成功')
        self.reporterId = response.json().get('data')['userId']  # 获取下一个接口的参数
        # 查看客户列表
        response = self.query_api.get_query(self.session, self.reporterId)  # 项目id不传递,封装接口中有默认值
        logging.info("query response ={}".format(response.json()))
        assert_utils(self, response, 200, 200, 'ok')

5、测试套件执行:新增客户查询模块后,测试套件中重新编辑-增加一个测试脚本

python 复制代码
import unittest
from yxf_p01 import app
from yxf_p01.script.login import login
from yxf_p01.script.query import query
from yxf_p01.lib.HTMLTestRunner import HTMLTestRunner

#添加测试脚本类
suite=unittest.TestSuite()
suite.addTest(unittest.makeSuite(login))
suite.addTest(unittest.makeSuite(query)) #再增加一个测试脚本内,工作中就是写完一个脚本增加一个脚本

#报告存放路径
report_file=app.BASE_DIR+"/report/report{}.html".format(time.strftime("%Y%m%d-%H%M%S"))

#运行测试套件且写入测试报告
with open(report_file,'wb')as f:
    runner=HTMLTestRunner(f,title="yxf-接口测试报告",description='test')
    runner.run(suite)

6、测试报告,执行run_suite.py文件生成测试报告。

相关推荐
海绵宝宝转agent2 分钟前
LeetCode100 LRU缓存思路讲解
java·开发语言·缓存
外收内放8 分钟前
08 | 优化篇③ 60 张动作立绘和 50 张特效贴图是怎么进游戏的
python·游戏·pygame
计算机毕业编程指导师21 分钟前
【计算机毕设推荐】基于Hadoop+Django的LLM多维度性能评估分析系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习 深度学习
大数据·hadoop·python·django·毕业设计·课程设计·llm性能
AC赳赳老秦25 分钟前
OpenClaw 与 FineBI 联动方案:公开数据自动采集与实时业务分析看板实践
大数据·开发语言·python·php·finebi·deepseek·openclaw
通信瓦工29 分钟前
OCP 冷却环境与冷却剂分配单元(CDU)子项目
java·开发语言
计算机毕业编程指导师36 分钟前
【Python毕设选题推荐】基于Hadoop+Django的奥斯卡奖获奖数据可视化分析系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习 深度学习
大数据·hadoop·python·计算机·毕业设计·课程设计·奥斯卡奖
风早爽太37 分钟前
Python 学习笔记:数据库迁移工具 ‌Alembic
数据库·python·fastapi·alembic
外收内放40 分钟前
06 | 优化篇① 游戏改名《鳞光纪》了:这次翻新,把“脸“全换了
python·游戏·pygame
计算机毕业编程指导师43 分钟前
【大数据毕设选题】基于Spark的电信网络诈骗话术语义特征挖掘分析系统源码 毕业设计 选题推荐 数据分析 机器学习 深度学习
大数据·hadoop·python·spark·毕业设计·课程设计·网络诈骗
for_ever_love__1 小时前
电商订单数据清洗实战——Pandas 处理缺失值、重复单与异常金额
python·数据分析·pandas·数据清洗