电子商务网站建设调查分析网站推广技巧和方法
用户注册接口
- 功能:用户提供用户名、密码、邮箱、手机号和验证码进行注册。
- 参数:用户名、密码、邮箱、手机号、验证码
- 返回:注册成功或失败的提示信息
用例编号 | 用例名称 | 用户名 | 密码 | 邮箱 | 手机号 | 验证码 | 预期结果 | 断言 |
---|---|---|---|---|---|---|---|---|
1 | 正常注册成功 | testuser123 | Test12345 | test123@example.com | 13800138000 | 123456 | 注册成功 | 状态码为 200,返回信息包含 “注册成功” 字样 |
2 | 用户名过短 | ab | Test12345 | test123@example.com | 13800138000 | 123456 | 用户名长度不能少于 3 位 | 状态码为 400,返回信息包含 “用户名长度不能少于 3 位” 字样 |
3 | 用户名过长 | abcdefghijklmnopqrstu | Test12345 | test123@example.com | 13800138000 | 123456 | 用户名长度不能超过 20 位 | 状态码为 400,返回信息包含 “用户名长度不能超过 20 位” 字样 |
4 | 用户名包含特殊字符 | ab@cd | Test12345 | test123@example.com | 13800138000 | 123456 | 用户名只能包含字母、数字和下划线 | 状态码为 400,返回信息包含 “用户名只能包含字母、数字和下划线” 字样 |
5 | 密码长度过短 | testuser123 | 12345 | test123@example.com | 13800138000 | 123456 | 密码长度不能少于 6 位 | 状态码为 400,返回信息包含 “密码长度不能少于 6 位” 字样 |
6 | 密码长度过长 | testuser123 | abcdefghijklmnopqrst1 | test123@example.com | 13800138000 | 123456 | 密码长度不能超过 20 位 | 状态码为 400,返回信息包含 “密码长度不能超过 20 位” 字样 |
7 | 密码只包含字母 | testuser123 | abcdef | test123@example.com | 13800138000 | 123456 | 密码必须包含字母和数字 | 状态码为 400,返回信息包含 “密码必须包含字母和数字” 字样 |
8 | 密码只包含数字 | testuser123 | 123456 | test123@example.com | 13800138000 | 123456 | 密码必须包含字母和数字 | 状态码为 400,返回信息包含 “密码必须包含字母和数字” 字样 |
9 | 邮箱格式错误 | testuser123 | Test12345 | testexample.com | 13800138000 | 123456 | 邮箱格式不正确 | 状态码为 400,返回信息包含 “邮箱格式不正确” 字样 |
10 | 手机号格式错误 | testuser123 | Test12345 | test123@example.com | 1234567890 | 123456 | 手机号格式不正确 | 状态码为 400,返回信息包含 “手机号格式不正确” 字样 |
11 | 验证码错误 | testuser123 | Test12345 | test123@example.com | 13800138000 | 654321 | 验证码错误 | 状态码为 400,返回信息包含 “验证码错误” 字样 |
12 | 用户名已存在 | existinguser | Test12345 | test123@example.com | 13800138000 | 123456 | 用户名已存在 | 状态码为 400,返回信息包含 “用户名已存在” 字样 |
13 | 邮箱已存在 | testuser123 | Test12345 | existing@example.com | 13800138000 | 123456 | 邮箱已被注册 | 状态码为 400,返回信息包含 “邮箱已被注册” 字样 |
14 | 手机号已存在 | testuser123 | Test12345 | test123@example.com | 13900139000 | 123456 | 手机号已被注册 | 状态码为 400,返回信息包含 “手机号已被注册” 字样 |
15 | 所有参数为空 | 用户名、密码、邮箱、手机号、验证码均为必填项 | 状态码为 400,返回信息包含 “用户名、密码、邮箱、手机号、验证码均为必填项” 字样 | |||||
16 | 部分参数为空(用户名) | Test12345 | test123@example.com | 13800138000 | 123456 | 用户名不能为空 | 状态码为 400,返回信息包含 “用户名不能为空” 字样 | |
17 | 部分参数为空(密码) | testuser123 | test123@example.com | 13800138000 | 123456 | 密码不能为空 | 状态码为 400,返回信息包含 “密码不能为空” 字样 | |
18 | 部分参数为空(邮箱) | testuser123 | Test12345 | 13800138000 | 123456 | 邮箱不能为空 | 状态码为 400,返回信息包含 “邮箱不能为空” 字样 | |
19 | 部分参数为空(手机号) | testuser123 | Test12345 | test123@example.com | 123456 | 手机号不能为空 | 状态码为 400,返回信息包含 “手机号不能为空” 字样 | |
20 | 部分参数为空(验证码) | testuser123 | Test12345 | test123@example.com | 13800138000 | 验证码不能为空 | 状态码为 400,返回信息包含 “验证码不能为空” 字样 |
import unittest from ddt import ddt, data, unpack import openpyxl import requests@ddt class TestUserRegistration(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_registration(self, _, __, username, password, email, phone, code, ___, assertion):url = 'https://example.com/register'# 构造请求体,包含用户名、密码、邮箱、手机号和验证码payload = {'username': username,'password': password,'email': email,'phone': phone,'code': code}# 发送 POST 请求到指定的注册接口,并将请求体以 JSON 格式发送response = requests.post(url, json=payload)# 从断言信息中分割出状态码和返回信息的断言部分# 例如,断言信息 "状态码为 200,返回信息包含“注册成功”字样" 会被分割成两部分status_code, message = assertion.split(',')# 验证响应的状态码是否符合预期# 先从状态码断言部分提取出预期的状态码,将其转换为整数类型# 然后使用 self.assertEqual 方法比较响应的状态码和预期的状态码是否相等self.assertEqual(response.status_code, int(status_code.split('为 ')[1]))# 验证响应的文本内容是否包含预期的信息# 从返回信息断言部分提取出预期包含的信息# 然后使用 self.assertIn 方法检查该信息是否存在于响应的文本中self.assertIn(message.split('包含“')[1].split('”')[0], response.text)if __name__ == '__main__':unittest.main()
对注册接口进行测试,用户通过用户名、密码、邮箱、手机号和验证码完成注册。
- 用例设计:遵循全面覆盖原则。正向用例使用合规参数,预期注册成功;逆向用例涵盖参数格式错误、为空等异常,预期失败并返回对应提示。
- 脚本实现:采用 Python 结合
ddt
,用openpyxl
读取 Excel 数据,requests
发送请求。测试方法中构造请求体,按 Excel 断言验证状态码与信息。- 环境处理:测试环境与后端沟通,将验证码固定为
123456
,简化流程且不影响生产。