当前位置: 代码迷 >> 综合 >> 12、一个完整的接口测试模板(针对有cookie时)---共用和全局变量两种方法(依赖关系,第二个操作里面需要用到第一个操作里面的某些值)
  详细解决方案

12、一个完整的接口测试模板(针对有cookie时)---共用和全局变量两种方法(依赖关系,第二个操作里面需要用到第一个操作里面的某些值)

热度:27   发布时间:2024-02-11 01:54:00.0

一、封装的函数

import requestsclass HttpRequest():def http_request(self, url, data, method, cookie=None):if method.lower() == "get":# verify=False忽略证书  sslres = requests.get(url, data, cookies=cookie, verify=False)return reselif method.lower() == "post":res = requests.post(url, data, cookies=cookie, verify=False)return res  # 返回的是一个消息实体else:raise  Exception('不支持的请求')

二、编写的测试用例

方法一: 共用

import unittest
from testcase.class_02_02 import HttpRequest#登录接口
class Login(unittest.TestCase):def setUp(self):#+self表示这个属性能被实例调用,可以在类函数里面调用#登录#放入生成cookie的步骤self.login_url = '登录的url'self.login_data = {"""参数"""}self.recharge_url = '充值的url'#获取登录后的cookiesself.cookies=HttpRequest().http_request(self.login_url,self.login_data,'get')print("setUp函数里面登录后残剩的cookies是:{0}".format(self.cookies))#针对于登录不需要cookie#正常登录def test_login_normal(self):#data不能共用,用例就是通过data不同来进行的测试data = {"""参数"""}res = HttpRequest().http_request(self.login_url, data, 'get')try:self.assertEqual('10001', res.json()['code'])except Exception as e:print("test_login_normal's error is {0}".format(e))#打印出请求的结果print(res.json())#输入错误的密码def test_login_wrong_pwd(self):data = {"""参数"""}res = HttpRequest().http_request(self.login_url, data, 'get')self.assertEqual('密码不能为空', res['msg'])try:self.assertEqual('20111', res.json()['code'])except Exception as e:print("test_login_wrong_pwd's error is {0}".format(e))# 抛出异常raise eprint(res.json())#针对于充值需要传入cookie#正常充值def test_recharge_normal(self):# recharge_url = '充值地址'recharge_data = {"""参数"""}res = HttpRequest().http_request(self.recharge_url, recharge_data, 'post',self.cookies)  # 少了cookietry:self.assertEqual('10001', res.json()['code'])except Exception as e:raise Exception("test_recharge_normal's error is {0}".format(e))print(res.json())#充值为负数def test_recharge_negative(self):# recharge_url = '充值地址'recharge_data = {"""参数"""}res = HttpRequest().http_request(self.recharge_url, recharge_data, 'post',self.cookies)  # 少了cookietry:self.assertEqual('20117', res.json()['code'])except Exception as e:print("test_recharge_negative's error is {0}".format(e))raise eprint(res.json())def tearDown(self):print("我已经执行完毕测试用例了")

方法二:全局变量cookie(缺点:关联性比较强,一步错,步步错)

import unittest
from testcase.class_02_02 import HttpRequest# 全局变量  局部变量
COOKIE = None# 登录接口
class Login(unittest.TestCase):def setUp(self):self.login_url = '登录的url'self.recharge_url = '充值的url'def test_login_normal(self):# 声明全局变量global COOKIEdata = {"""参数"""}res = HttpRequest().http_request(self.login_url, data, 'get')if res.cookies:  # 如果cookie有的话 就更新COOKIECOOKIE = res.cookiestry:self.assertEqual('10001', res.json()['code'])except Exception as e:print("test_login_normal's error is {0}".format(e))# 打印出请求的结果print(res.json())def test_login_wrong_pwd(self):data = {"""参数"""}res = HttpRequest().http_request(self.login_url, data, 'get')self.assertEqual('密码不能为空', res['msg'])try:self.assertEqual('20111', res.json()['code'])except Exception as e:print("test_login_wrong_pwd's error is {0}".format(e))# 抛出异常raise eprint(res.json())# 针对于充值需要传入cookie# 正常充值def test_recharge_normal(self):global COOKIErecharge_data = {"""参数"""}res = HttpRequest().http_request(self.recharge_url, recharge_data, 'post', COOKIE)  # 少了cookietry:self.assertEqual('10001', res.json()['code'])except Exception as e:raise Exception("test_recharge_normal's error is {0}".format(e))print(res.json())# 充值为负数def test_recharge_negative(self):# recharge_url = '充值地址'recharge_data = {"""参数"""}res = HttpRequest().http_request(self.recharge_url, recharge_data, 'post', COOKIE)  # 少了cookietry:self.assertEqual('20117', res.json()['code'])except Exception as e:print("test_recharge_negative's error is {0}".format(e))raise eprint(res.json())def tearDown(self):print("我已经执行完毕测试用例了")

 三、输出的测试报告

# ..成功  F失败 1代码错误
import unittest
import HTMLTestRunner
from testcase import class_02_01 #导入模块名
import time
import ossuite = unittest.TestSuite()  # 存储用例loader = unittest.TestLoader()  # 创建一个加载器suite.addTest(loader.loadTestsFromModule(class_02_01))# 新鲜 html
if __name__ == "__main__":time1 = time.strftime("%Y-%m-%d %H-%M-%S")name1 = time1 + "report.html"with open(name1, 'wb') as file:runner = HTMLTestRunner.HTMLTestRunner(stream=file,title="单元测试报告",description="测试用例执行统计1",verbosity=2)runner.run(suite)

 

  相关解决方案