项目简介
*需求理解
1.发送短信验证码接口
-11位有效手机号均能成功接收到有效验证码,有效时间为6分钟
-验证码根据手机号后3位存在sms_db_xx库表t_mvcode_info_xx中
-本项目使用的手机号结尾均为846,方便查询数据库
2.用户注册接口
-接收验证码的手机号需要和注册时的手机号码一一对应才能注册成功
-注册时的用户名user_id是唯一的,不能重复,否则注册失败
-注册成功后会自动生成唯一Fuid(用于实名认证)
-注册时的手机号和密码加密保存
-注册后的信息保存在user_db.t_user_info库表中
3.实名认证接口
-真实姓名和真实身份证号可以认证成功(有效标记Flstate为1)
-同一个手机号(同一个Fuid)只能认证一个有效的实名信息,如果认证了实名姓名和身份证号不对应的信息会标记为无效(Flstate为2)
-同一身份信息已经被认证后无法再认证其他的注册信息
-认证成功后,用户注册的表user_db.t_user_info中对应的Ftrue_name填写为真实姓名,Fauth_id填写为实名认证表的Fpk_id
4.绑定银行卡接口
-绑卡之前需要已经实名认证
-绑定的银行卡的手机号和身份信息需要和实名认证时的一致
*接口协议
基于soap协议的webserivce接口
项目主要功能
1.动态生成指定目录
2.自动生成部分测试数据(如: 手机号码)
3.参数化测试数据
4.数据的序列化与反序列化
5.自动链接MySql数据库, 执行sql语句
6.解析配置文件
7.解析excel文件
8.记录测试用例执行过程日志
9.发送基于soap协议的websercive接口请求
10.自动生成HTML测试报告
11.发送测试报告邮件
*项目环境
1.python3.x解释器
2.unittest单元测试框架, 编写与执行测试用例
3.pymysql数据库模块, 执行sql语句
4.pyopenxl模块,处理excel
5.suds模块发送接口请求, 主要是webservice接口
6.ddt模块,需要修改,请使用本项目中指定的ddt模块
7.yagmail模块, 用来发送报告邮件
测试用例设计逻辑
*发送验证码接口
1.参数化
-${verify_phone}
测试接收验证码的手机号
值随机生成,结尾都是846,为了方便查询数据库(数据库是分表分库)
2.执行用例
-代码用例正常读excel测试数据发送请求,断言实际结果与预期结果是否一致即可(注意代码中结果的类型转换)
*注册接口
1.参数化
-${verify_unregistered_phone}
程序自动生成,结尾未846,且需要保证在数据库中未被注册
这个手机号用来接收验证码,也用来新用户注册
-${verify_code}
${verify_unregistered_phone}参数对应的验证码
从数据库表sms_db_46.t_mvcode_info_8中取,所有的用例均使用同一个验证码(除特殊反向用例)
-${verify_phone}
随机手机号码(拼接注册时的用户名使用,保证用户名唯一)
用例中设计的用户名是linux超+{verify_phone}拼接而成
-${user_id}
注册成功的用户名,来源为注册时的用户名(linux超+{verify_phone}),用来参数化注册成功后查询数据库的sql语句
2.执行用例
-第一条用例用来获取验证码和生成接收验证码(也是注册时使用的手机号码)的手机号
这两个值用来参数化${verify_unregistered_phone}, ${verify_code}
-注册成功的用例需要和手机号码已被注册的两个用例一前一后执行,这样避免再找一个已经注册的手机号了
-注册成功后需要保存成功后的用户名,用来参数化验证数据库的sql语句中的参数${user_id}
预期结果添加is_exist_db的值,用来说明是否注册成功
注:正向的用例最好是放在excel用例的最后执行(如果放前面,那么手机号已经被注册
后面用例还要更换手机号测试,否则后面的用例会返回手机号已经被注册)
*实名认证接口
1.参数化
-${verify_unregistered_phone}
程序自动生成,结尾未846,且需要保证在数据库中未被注册
这个手机号用来接收验证码,也用来新用户注册
-${verify_code}
${verify_unregistered_phone}参数对应的验证码
从数据库表sms_db_46.t_mvcode_info_8中取,用于注册用户时使用
-${registered_uid}
已注册但未实名的Fuid, 从user_db.t_user_info表中取
且取的是注册时用户名Fuser_id为linux超${verify_unregistered_phone}组成的Fuid
-${true_name}
成功认证后的真实姓名, 来源是认证时的真实姓名, 用来参数据认证后的sql语句, 为了验证认证后数据库中认证的状态是否真实有效
2.执行用例
-执行实名接口用例之前需要先删除user_db.t_user_auth_info表中认证过的信息(删除真实姓名为超哥和张亮的信息),
目的是同一个身份信息只能认证一个未注册的手机号, 而我使用的身份信息只有一个,所以要删除,确保身份信息未被实名过
-所有用例执行之前先进行注册操作, 并记录注册时的真实姓名, 并根据真实姓名找到对应的uid, uid是实名认证必要的参数
-接口在实名时, 实名和号码不对应也能实名认证成功, 但是数据库中的状态Flstate会标记为无效的认证
所以程序中添加了认证成功后检查数据库中认证是否有效
*绑定银行卡接口
1.参数化
-${verify_unregistered_phone}
程序自动生成,结尾未846,且需要保证在数据库中未被注册
这个手机号用来接收验证码,也用来新用户注册
-${verify_code}
${verify_unregistered_phone}参数对应的验证码
从数据库表sms_db_46.t_mvcode_info_8中取,用于注册用户时使用
-${user_id}
注册成功的用户名,来源为注册时的用户名(linux超${verify_unregistered_phone}),用来参数化注册成功后查询数据库的sql语句
-${true_uid}
实名用户对应的uid,主要用来绑定银行卡参数
-${untrue_register_uid}
未实名认证的uid, 主要从数据库表user_db.t_user_info中取, 用来参数化未认证的用户绑定银行卡的用例
2.执行用例
-执行用例之前需要先进行实名认证操作, 因为绑卡只能是已经实名认证的帐号才能绑定银行卡
-本接口的绑定成功的用例无法通过, 因为绑卡需要一个支付密码的参数, 而支付密码需要其他接口设置,比较繁琐, 因此本接口不考虑正向用例
执行项目
1.cd D:\AuditApiAutoTest
2.python run_case.py