python之自动化框架中cookies处理方法006

我们在测试非登录模块的时候,会需要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()))

 

posted @ 2020-12-06 17:28  仰望浩瀚星辰  阅读(219)  评论(0编辑  收藏  举报