关于Unittest单元测试框架的具体使用方法链接链接(点击跳转)↓
API自动化测试-Python+requests+unittest框架介绍https://blog.csdn.net/Liu_GuoXing/article/details/127526943
接口测试框架目录:
封装登录接口思路:
整体思想:
分析:
封装代码:
1.在api目录下创建login_api.py文件
- # 在api目录下创建login_api.py
- # 创建类
- class Login_Api:
- # 定义属性
- def __init__(self):
- self.url_verify = 'xxxx'
- self.url_login = 'xxxxx'
- self.headers = 'xxxx'
-
- # 定义方法-获取验证码
- def get_verify(self, my_session):
- return my_session.get(url=self.url_verify)
-
- # 定义方法-登录
- def login(self, my_session, req_data):
- return my_session.post(url=self.url_login, headers=self.headers, data=req_data)
2.在script目录中创建测试类文件,从unittest.Testcase类继承并添加setUpClass及tearDownClass和普通方法
- # 在script中创建test_login.py
- import unittest
-
- import requests
-
- from api.login_api import Login_Api
- # 导包
-
- class LgxLogin(unittest.TestCase):
- my_session = None
-
- @classmethod
- def setUpClass(cls) -> None:
- cls.login_api = Login_Api()
- # 调用自己封装的类
- cls.my_session = requests.Session()
-
- @classmethod
- def tearDownClass(cls) -> None:
- cls.my_session.close()
-
- def test01_login_ok(self):
- # 登录成功
- # 调用自己封装的方法获取验证码
- resp_verify = self.login_api.get_verify(self.my_session)
- # 调用自己封装的方法实现登录
- req_data = 'xxxxx'
- resp_login = self.login_api.login(self.my_session, req_data)
- # 打印响应结果
- print(resp_login)
- # 增加断言-响应状态码
- self.assertEqual(200, resp_login.status_code)
- # 增加断言-响应体msg的值为登录成功
- self.assertIn('登录成功', resp_login.json().get('msg'))
-
- def test02_username_not_exits(self):
- # 用户名不存在
- # 调用自己封装的方法获取验证码
- resp_verify = self.login_api.get_verify(self.my_session)
- # 调用自己封装的方法实现登录
- req_data = 'AAAAAA'
- resp_login = self.login_api.login(self.my_session, req_data)
- # 打印响应结果
- print(resp_login)
- # 增加断言-响应状态码
- self.assertEqual(200, resp_login.status_code)
- # 增加断言-用户名不存在
- self.assertIn('用户名不存在', resp_login.json().get('msg'))
-
- def test03_pwd_error(self):
- # 密码错误
- # 调用自己封装的方法获取验证码
- resp_verify = self.login_api.get_verify(self.my_session)
- # 调用自己封装的方法实现登录
- req_data = 'BBBBB'
- resp_login = self.login_api.login(self.my_session, req_data)
- # 打印响应结果
- print(resp_login)
- # 增加断言-响应状态码
- self.assertEqual(200, resp_login.status_code)
- # 增加断言-响应体msg的值为密码错误
- self.assertIn('密码错误', resp_login.json().get('msg'))
进一步优化:
以上就是本文的全部内容了,合理利用封装思想,可以时数据动态管理,应对域名、协议等共用的信息变化时可以通过直接公共方法里的属性值进行全局修改,如有疑问欢迎评论区留言讨论。
❤关注我,不迷路❤
******我的本文相关专栏******
******我的其它作品专栏******