python+request实现接口-参数化小结

1、 接口封装:

  1. 注意点组装变量
  2. post请求中的data(form表格)和json(json格式)
python 复制代码
#导包。。。
class loginAPI():
    #初始化url地址
    def __init__(self):
        self.getLogin01_url = app.BASE_URL+"/iCloud-rest/channel-manager/authentication/account"
        self.getLogin02_url = app.BASE_URL+"/iCloud-rest/channel-manager/authentication/form"
    #封装登陆接口一先获取账号
    def getLoginAccout(self,session,username,password):
        data={"username":username,"password":password}
        # data = {"username": "13426251955", "password": "123321Aa"}
        response=session.post(self.getLogin01_url,json=data)  #json格式
        return response
    #封装登陆接口二-选择账号后登陆
    def getLogin02(self,session,tenantId,username,password,remember_me='true'):
        data = {
                    "username":f"{tenantId}:{username}",  #两个变量组成一个变量使用格式
                    "password": password,
                    "remember_me": remember_me
                }
        response=session.post(self.getLogin02_url,data=data) #form表格
        return response

2、测试脚本

  1. 断言封装,直接使用

  2. 参数化,response.json提取

  3. 函数调用时,请注意参数顺序(url,data),如果url=url,data=data这种格式可以不用管参数顺序;

python 复制代码
#导包。。。
class login(unittest.TestCase):
		username= "13426251900"
    password="123456"
    password_error="123133"
    remember_me = 'true'
    def setUp(self) -> None:
        #封装接口类实例化,创建request连接
        self.login_api=loginAPI()
        #session实例化
        self.session=requests.Session()
    def tearDown(self) -> None:
        self.session.close()
    def test03_get_login02(self):
        # 第一个接口
        response = self.login_api.getLoginAccout(self.session, self.username, self.password)
        logging.info("login response = {}".format(response.json()))
        assert_utils(self, response, 200, 200, '获取账号列表')  #频繁使用的断言封装
        self.tenantId=response.json().get('data')[0]['tenantId']
        # 定义参数
        # 调用封装接口,请注意参数顺序
        response=self.login_api.getLogin02(self.session,self.tenantId,self.username,self.password)
        logging.info("login sucess response={}".format(response.json()))
        assert_utils(self,response,200,200,'登录授权成功')

3、断言封装

python 复制代码
def assert_utils(self,response,status_code,code,message):
    self.assertEqual(status_code, response.status_code)
    self.assertEqual(code, response.json().get('code'))
    self.assertEqual(message, response.json().get('message'))
相关推荐
杜大哥8 小时前
python程序:如何查看电脑【电池电量的剩余百分比】 和 【是否插入连接着充电器】?
开发语言·python
wuyk5558 小时前
Python网络爬虫入门到实战 第01章:爬虫到底是什么?原理、流程、合法性、风险全解析(零基础必看)
开发语言·爬虫·python
信誓旦旦的程序猿8 小时前
【量化系统从零构建 #04】存储设计:选型·建库·交易日历
java·人工智能·python·股票数据api·股票数据·股票数据api接口·股票api数据接口
yurenpai(27届找实习中)8 小时前
Java 10 的 var 为什么不能随便用?从订单汇总看懂类型推断与泛型陷阱
java·开发语言·java18
shmily麻瓜小菜鸡9 小时前
JS/TS 易踩坑知识点 — 模块化与工程化类
开发语言·javascript·ecmascript
geovindu9 小时前
CSharp: Observer Pattern
开发语言·后端·观察者模式·设计模式·c#·.netcore·行为模式
萧鼎9 小时前
Python 高性能Web框架神器 FastAPI:自动生成API文、基于Pydant、异步请求处理全搞定
前端·python·fastapi
2601_962299889 小时前
Linux执行Python脚本方法
linux·python·脚本·解释器·shebang
郝学胜-神的一滴10 小时前
C++11 工程级应用 09:告别无谓拷贝,解锁高性能移动语义
开发语言·数据结构·c++·vscode·软件工程·visual studio