一、什么反射
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)