|
2#
楼主 |
发表于 2018-5-31 16:22:47
|
只看该作者
- <p>四、下面以注册接口为例子</p><p>
- </p><p>因注册时需要获取短信验证码,所以除了调用注册接口之外,还需要调用获取短信验证码皆苦,在base_</p><p>api下新建register_api.py、send_sms_code_api.py,内容如下:</p><p>
- </p><p>register_api.py</p><p>
- </p><p>复制代码</p><p> 1 # -*- coding:utf-8 -*-</p><p> 2 from base_api.base_api import BaseApi</p><p> 3 import settings</p><p> 4 </p><p> 5 class RegisterApi(BaseApi):</p><p> 6 url = '/home/register'</p><p> 7 </p><p> 8 #对BaseApi类中build_custom_param方法重写</p><p> 9 def build_custom_param(self, data):</p><p>10 return {'login_name':data['login_name'],'password':data['password'],'code':data['code'],'nickname':data['nickname']}</p><p>复制代码</p><p>send_sms_code_api.py</p><p>
- </p><p>复制代码</p><p> 1 # -*- coding:utf-8 -*-</p><p> 2 from base_api.base_api import BaseApi</p><p> 3 import settings</p><p> 4 </p><p> 5 </p><p> 6 class SendSmsCaptcha(BaseApi):</p><p> 7 url = '/user/sendsms'</p><p> 8 </p><p> 9 def build_custom_param(self, data):</p><p>10 return {'type': data['type'], 'phone': data['phone']}</p><p>复制代码</p><p>对两个接口的url地址和所需要的入参都已经封装好了,接下来开始写case。</p><p>
- </p><p> </p><p>
- </p><p>在test_case下新建test_register_api.py</p><p>
- </p><p>下面是一个注册成功的例子</p><p>
- </p><p>复制代码</p><p> 1 # -*- coding:utf-8 -*-</p><p> 2 from unittest import TestCase</p><p> 3 from base_api.register_api import RegisterApi</p><p> 4 from base_api.send_sms_code_api import SendSmsCaptcha</p><p> 5 from utilities import user</p><p> 6 import settings,json</p><p> 7 </p><p> 8 </p><p> 9 </p><p>10 class TestRegisterApi(TestCase):</p><p>11 new_mobile = '13000000001'</p><p>12 password = '123abc'</p><p>13 nick_name = 'XiangXi'</p><p>14 </p><p>15 </p><p>16 def test_register_success(self):</p><p>17 # 调用发送短信验证码接口</p><p>18 send_sms_code_api = SendSmsCaptcha()</p><p>19 send_sms_code_api.post({'type':'register','phone':self.new_mobile})</p><p>20 </p><p>21 # 校验发送短信验证码接口HTTP状态码为200</p><p>22 self.assertEqual(send_sms_code_api.get_status_code(),200)</p><p>23 </p><p>24 # 校验发送短信验证码接口反参中code为0,代表成功(不同项目该字段值不一定为0)</p><p>25 self.assertEqual(send_sms_code_api.get_code(),0)</p><p>26 </p><p>27 # 通过数据库获取短信验证码</p><p>28 sms_code = user.get_sms_captcha(self.new_mobile)</p><p>29 </p><p>30 # 调用注册接口</p><p>31 register_api = RegisterApi()</p><p>32 response = register_api.post({'login_name':self.new_mobile,'password':self.password,'code':sms_code,'nickname':self.nick_name})</p><p>33 </p><p>34 # 校验注册接口HTTP状态码为200</p><p>35 self.assertEqual(send_sms_code_api.get_status_code(),200)</p><p>36 </p><p>37 # 校验注册接口反参中code为0</p><p>38 self.assertEqual(register_api.get_code(),0)</p><p>39 </p><p>40 # 校验反参中手机号、登录名与用户昵称是否与入参值一样</p><p>41 identity_obj = json.loads(response.content)['result']['identity_obj']</p><p>42 self.assertEqual(identity_obj['nickname'],self.nick_name)</p><p>43 self.assertEqual(identity_obj['login_name'],self.new_mobile)</p><p>44 self.assertEqual(identity_obj['mobilephone'],self.new_mobile)</p><p>45 </p><p>46 def tearDown(self):</p><p>
- </p><p>47 user.delete_user(self.new_mobile)</p><p>复制代码</p>
复制代码
最后和WEB端类似,通过teardown()方法将新注册的用户在数据库中删除,防止该手机号下次执行ca
se时候报手机号已被注册。
为了更好了验证通过接口注册的用户信息,也可以调用登录接口测试一下注册接口反参中的用户名是
否可以正常登陆返回token。
五、如果调用接口的前提需要用户登录,那么就需要BaseApi类中build_base_param方法中的token有
一个有效的值,否则调用接口时可能会提示token错误或者用户未登录等,这种情况下可以新建一个
LoginBaseApi类,继承BaseApi,代码如下:
假设对登录接口已经进行了封装,入参为login_name和password
复制代码
1 # -*- coding:utf-8 -*-
- <p> 2 from base_api.base_api import BaseApi</p><p> 3 from base_api.login_api import LoginApi</p><p> 4 </p><p> 5 class LoginBaseApi(BaseApi):</p><p> 6 def __init__(self, login_name,password, *args, **kwargs):</p><p> 7 super(LoginBaseApi, self).__init__(*args, **kwargs)</p><p> 8 self.login_name = login_name</p><p> 9 self.password = password</p><p>10 </p><p>11 def build_base_param(self):</p><p>12 base_param = super(LoginBaseApi, self).build_base_param()</p><p>13 response = LoginApi().post(self.login_name, self.password)</p><p>14 base_param['token'] = token</p><p>15 return base_param</p>
复制代码
复制代码
这时,底层类就有两个,一个是BaseApi() 一个是LoginBaseApi(),需要登录的接口在封装入参时继承Login
BaseApi,不需要登录的接口继承BaseApi
|
|