用户登录接口
- 功能:注册成功后,用户使用用户名、密码和验证码进行登录,获取令牌(token)。
- 参数:用户名、密码、验证码
- 返回:登录成功返回 token,失败返回错误信息
用例编号 | 用例名称 | 用户名 | 密码 | 验证码 | 预期结果 | 断言 |
---|---|---|---|---|---|---|
1 | 正常登录成功 | testuser123 | Test12345 | 123456 | 登录成功,返回 token | 状态码为 200,返回信息包含 token 字段 |
2 | 用户名不存在 | nonexistuser | Test12345 | 123456 | 用户名不存在 | 状态码为 400,返回信息包含 “用户名不存在” 字样 |
3 | 密码错误 | testuser123 | Wrong12345 | 123456 | 密码错误 | 状态码为 400,返回信息包含 “密码错误” 字样 |
4 | 验证码错误 | testuser123 | Test12345 | 654321 | 验证码错误 | 状态码为 400,返回信息包含 “验证码错误” 字样 |
5 | 用户名为空 | Test12345 | 123456 | 用户名不能为空 | 状态码为 400,返回信息包含 “用户名不能为空” 字样 | |
6 | 密码为空 | testuser123 | 123456 | 密码不能为空 | 状态码为 400,返回信息包含 “密码不能为空” 字样 | |
7 | 验证码为空 | testuser123 | Test12345 | 验证码不能为空 | 状态码为 400,返回信息包含 “验证码不能为空” 字样 | |
8 | 所有参数为空 | 用户名、密码、验证码均为必填项 | 状态码为 400,返回信息包含 “用户名、密码、验证码均为必填项” 字样 |
import unittest from ddt import ddt, data, unpack import openpyxl import requests@ddt class TestUserLogin(unittest.TestCase):# 替换为你的 Excel 文件路径file_path = 'your_excel_file.xlsx'workbook = openpyxl.load_workbook(file_path)sheet = workbook.active# 从 Excel 文件的第二行开始读取数据,将每行数据作为一个元素添加到 test_data 列表中test_data = [row for row in sheet.iter_rows(min_row=2, values_only=True)]@data(*test_data)@unpackdef test_user_login(self, _, __, username, password, code, ___, assertion):url = 'https://example.com/login'# 构造请求体,包含用户名、密码和验证码payload = {'username': username,'password': password,'code': code}# 发送 POST 请求到指定的登录接口,并将请求体以 JSON 格式发送response = requests.post(url, json=payload)# 从断言信息中分割出状态码和返回信息的断言部分status_code, message = assertion.split(',')# 验证响应的状态码是否符合预期self.assertEqual(response.status_code, int(status_code.split('为 ')[1]))# 验证响应的文本内容是否包含预期的信息if "包含“" in message:self.assertIn(message.split('包含“')[1].split('”')[0], response.text)else:# 针对返回token的情况,检查返回信息中是否存在token字段if "token字段" in message:self.assertTrue('token' in response.json())if __name__ == '__main__':unittest.main()
- 使用
self.assertEqual
来验证响应状态码是否与预期相符。- 使用
self.assertIn
来验证响应文本内容是否包含预期信息。- 当登录成功返回 token 时,使用
self.assertTrue
验证响应中是否包含 token 字段,以此确保接口返回结果的正确性。- 环境处理:与后端沟通,将验证码固定为特定值,简化测试,专注登录核心功能,且不影响生产环境。