1、 接口封装:
- 注意点组装变量
- 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、测试脚本
-
断言封装,直接使用
-
参数化,response.json提取
-
函数调用时,请注意参数顺序(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'))