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

13、一个完整的接口测试模板(针对有cookie时)---反射方法(依赖关系,第二个操作里面需要用到第一个操作里面的某些值)

热度:65   发布时间:2024-02-11 08:49:38.0

一、什么反射

class GetData:Cookie = '小郭'if __name__ == '__main__':print(GetData.Cookie)#设置(类名,属性名,新值)  修改属性值setattr(GetData,'Cookie','小黄')#可以直接把类里面的属性做修改#判断里面有没有cookie这个属性print(hasattr(GetData,'Cookie'))#获取cookie的值  attribute属性print(getattr(GetData,'Cookie'))#删除cookie属性delattr(GetData,'Cookie')print(hasattr(GetData,'Cookie'))

二、利用反射函数进行接口自动化

a.请求方式函数

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('不支持的请求')

b. 反射函数

class GetData:Cookie = '小郭'

c.测试用例

import unittest
from testcase_01.class_02_02 import HttpRequest
from testcase_01.class_02_04 import GetData# 登录接口
class Login(unittest.TestCase):def setUp(self):self.login_url = '登录的url'self.recharge_url = '充值的url'def test_login_normal(self):data = {"""参数"""}res = HttpRequest().http_request(self.login_url, data, 'get')if res.cookies:  # 如果cookie有的话 就更新COOKIEsetattr(GetData, 'Cookie', 'res.cookies')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_data = {"""参数"""}res = HttpRequest().http_request(self.recharge_url, recharge_data, 'post', getattr(GetData,'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_data = {"""参数"""}res = HttpRequest().http_request(self.recharge_url, recharge_data, 'post', getattr(GetData,'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("我已经执行完毕测试用例了")

d.测试报告

# ..成功  F失败 1代码错误
import unittest
import HTMLTestRunner
from testcase_01 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)

 

  相关解决方案