Python自动化测试①-登录、充金币验证

Auth:焱讲       Date:2020/11/18       Cat:Python专栏       Word:共4400字

已关闭评论

第一步:封装代码 #API工具类文件夹 #2020年10月18日21:24:38 import requests

class HTTPRequest: '''利用request封装get请求和post请求 #写封装时,开头注释 '''

def http_request(self,url,data,method,cookie=None): #method 请求方法 '''url:请求的地址 http://xxxx:post param:传递的参数 非必填 字典格式传递参数 cookie:请求的时候传递的cookie值 method 请求方式:支持get以及post请求 ''' if method.lower()=="get": res = requests.post(url, data, cookies=cookie) # 响应结果的消息实体(响应结果包含响应头、响应状态码、cookies、响应正文) else: res = requests.post(url, data, cookies=cookie) # 响应结果的消息实体(响应结果包含响应头、响应状态码、cookies、响应正文)

#print("响应正文2:",res.json) #返回为字典类型(dict json) ,一般推荐字典类型,更方便取值 # print("响应正文1:",res.text) #返回类型json,返回为字符串类型(str json) return res #返回一个消息实体

if __name__=='__main__': url = 'https://i.loveloveme.cn/api/token' data = {"email": "mydingyan@qq.com", "password": "5waishenme"} # id定位文本框,name也可以定位 res = HTTPRequest().http_request(url,data,"post") print("登录结果是",res.json())

#post请求 带参数 # # print("响应头:",res.headers) #响应头,可以用requests.get中查看 # print("响应状态码",res.status_code) #打印接口响应状态码 # # print("**打印cookies***:",res.cookies) #打印的值为类字典形式【key:value】 (PHPSESSID=dpdrhoapfl6kjsj51m6v1pc828 为输入的结果等号前为:key,等号后为value) # print("**打印cookies value***:",res.cookies["PHPSESSID"]) #打印的值为类字典形式(取值使用key取值) # # print("响应正文1:",res.text) #返回类型json,返回为字符串类型(str json) # print("响应正文2:",res.json) #返回为字典类型(dict json) ,一般推荐字典类型,更方便取值

#已成功部署,无需安装,请登录修改默认账号密码

第二步:编写测试用例

#1、完成htt_request类的单元测试 #针对http_request类做作业 :登录接口 冲金币接口 #2针对登录接口写4条用例:正常登录、不输入密码、不输入账号一个、输入错误的密码 #充值接口4个:正常充值、不输入账号、不输入金额、输入错误的金额(负数) #3清利用任何一种方法实现用例的加载并执行 #4生成HTML类的测试报告 #需要在测试类里面加上异常处理和断言

#写测试用例 #第一步:先搭建测试报告 import unittest #单元测试框架 from class_1018.zuoye.http_request import HTTPRequest #调用HTTPRequeset

class TestHttp(unittest.TestCase):

def setUp(self): #self表示可以在函数中被调用 #登录 self.login_url="http://test.lemonban.com/futureloan/mvc/api/member/login" self.login_data={"mobilephone":"13430510761","pwd":"123456"} #充值的URL self.recharge_url="http://test.lemonban.com/futureloan/mvc/api/member/recharge" #获取登录后的cookies self.cookies = HTTPRequest().http_request(self.login_url,self.login_data,"get").cookies print("setup函数里面登录后产生的cookies是{}".format(self.cookies))

def test_login_normal(self): #正常登录 data = {"mobilephone":"13430510761","pwd":"123456"} res = HTTPRequest().http_request(self.login_url,data,"get") try: self.assertEqual("10001",res.json()["code"]) #断言,判断返回值(返回值为json)中的code except AssertionError as e: print("test_login_normal‘s error is{}".format(e)) raise e #抛出异常 print(res.json())

def test_login_wrong_pwd(self): #输入错误的密码 data = {"mobilephone":"13430510761","pwd":"75131"} res = HTTPRequest().http_request(self.login_url,data,'get') try: self.assertEqual("20111",res.json()["code"]) #断言,判断返回值(返回值为json)中的code except AssertionError as e: print("test_login_normal‘s error is{}".format(e)) raise e #抛出异常 print(res.json())

def test_recharge_normal(self): #正常充值 recharge_data ={"mobilephone":"13430510761","amount":"1000"} res = HTTPRequest().http_request(self.recharge_url,recharge_data,'post',self.cookies) try: self.assertEqual("10001",res.json()["code"]) #断言,判断返回值(返回值为json)中的code except AssertionError as e: print("test_login_normal‘s error is{}".format(e)) raise e print(res.json())

def test_recharge_negative(self):#充值为负数 recharge_data = {"mobilephone":"13430510761","amount":"-500"} res = HTTPRequest().http_request(self.recharge_url,recharge_data,"post",self.cookies) print(res.json())

def tearDown(self): pass

第三步:执行测试用例 #API工具类文件夹 #2020年10月18日21:24:38 import requests

class HTTPRequest: '''利用request封装get请求和post请求 #写封装时,开头注释 '''

def http_request(self,url,data,method,cookie=None): #method 请求方法 '''url:请求的地址 http://xxxx:post param:传递的参数 非必填 字典格式传递参数 cookie:请求的时候传递的cookie值 method 请求方式:支持get以及post请求 ''' if method.lower()=="get": res = requests.post(url, data, cookies=cookie) # 响应结果的消息实体(响应结果包含响应头、响应状态码、cookies、响应正文) else: res = requests.post(url, data, cookies=cookie) # 响应结果的消息实体(响应结果包含响应头、响应状态码、cookies、响应正文)

#print("响应正文2:",res.json) #返回为字典类型(dict json) ,一般推荐字典类型,更方便取值 # print("响应正文1:",res.text) #返回类型json,返回为字符串类型(str json) return res #返回一个消息实体

if __name__=='__main__': url = 'https://i.loveloveme.cn/api/token' data = {"email": "mydingyan@qq.com", "password": "5waishenme"} # id定位文本框,name也可以定位 res = HTTPRequest().http_request(url,data,"post") print("登录结果是",res.json())

#post请求 带参数 # # print("响应头:",res.headers) #响应头,可以用requests.get中查看 # print("响应状态码",res.status_code) #打印接口响应状态码 # # print("**打印cookies***:",res.cookies) #打印的值为类字典形式【key:value】 (PHPSESSID=dpdrhoapfl6kjsj51m6v1pc828 为输入的结果等号前为:key,等号后为value) # print("**打印cookies value***:",res.cookies["PHPSESSID"]) #打印的值为类字典形式(取值使用key取值) # # print("响应正文1:",res.text) #返回类型json,返回为字符串类型(str json) # print("响应正文2:",res.json) #返回为字典类型(dict json) ,一般推荐字典类型,更方便取值

#已成功部署,无需安装,请登录修改默认账号密码

第四步:测试用例执行结果 执行结果

      

评论已关闭!