我们在测试非登录模块的时候,会需要cookies,那么如何传递这个cookies呢?
方法一:全局变量 缺点:关联性比较强
思路:
1.excel非登录模块的测试用例第一条加登录成功的用例
2.执行这条用例成功后,获取cookies并存入全量变量:COOKIE
主程序代码中,定义一个全局变量,并在函数体中使用关键字global 申明该变量:
from tools.http_request import HttpRequest from tools.do_excel import DoExcel #引用DoExcel模块 COOKIE =None def run(test_data):#传入列表嵌套字典的数据格式 global COOKIE for item in test_data:#循环执行用例 print("正在测试的用例标题:{0}".format(item["title"])) res = HttpRequest().http_request(item["method"], item["url"],eval(item["header"]), item["data"],COOKIE) if res.cookies:#非空、非null即为TRUE COOKIE = res.cookies print("测试结果是:{0}".format(res.json())) DoExcel().write_back("\test_data\test_case.xlsx","recharge_case",item["case_id"]+1,str(res.json())) if __name__ == '__main__': test_data = DoExcel().get_data("\test_data\test_case.xlsx","recharge_case") run(test_data)
方法二:反射(根据传入的类直接对类的属性进行操作),单独编写GetData模块,主程序引入该模块,通过setattr函数给cookie赋值、getattr函数获取cookie,不需要声明
class GetData:#类 Cookie = None #属性;Cookie,初始化为None
对这个类的基本操作如下:
if __name__ == '__main__':
print(GetData.Cookie)
setattr(GetData,'Cookie','001')#可以直接把类里面的属性值做修改,第一个参数:类名,第二个参数:属性名,第三个参数:赋值
print(GetData.Cookie)
print(hasattr(GetData,'Cookie'))#判断是否存在这个属性值
print(type(getattr(GetData,'Cookie')))#获取属性值
delattr(GetData,'Cookie')#删除属性值
print(hasattr(GetData, 'Cookie')) # 判断是否存在这个属性值,返回布尔值
主程序代码中引入该模块:
from tools.get_data import GetData def run(test_data): for item in test_data: print("正在测试的用例标题:{0}".format(item["title"])) res = HttpRequest().http_request(item["method"], item["url"],eval(item["header"]), item["data"],getattr(GetData,"Cookie")) if res.cookies: setattr(GetData,"Cookie",res.cookies) print("测试结果是:{0}".format(res.json()))