解决自动化数据依赖方案

  1. 前置函数,设置成类属性。

  2. 业务流测试用例,通过执行顺序,保存所需的数据依赖,写到类属性

  3. 实现业务流的完全数据驱动,ddt测试用例实际时,可以增加一列

    1. 在用例数据中添加一列 extract 表示提取响应数据并保存在对应的类属性中,规则如下:

      [{"name":"id","exp":"$..id"},{"name":"token","exp":"$..token"}]
      
    2. 数据库断言后调用此方法

      import jsonpath
      def extract_data(self):
          """
        提取响应中的数据并保存到用例类属性中
          :return:
          """
          if self.case.get('extract'):
              for item in json.loads(self.case['extract']):
                  name = item['name']
                  exp = item['exp']
                  res = jsonpath.jsonpath(self.response.json(), exp)
                  if res:
                      setattr(self.__class__, name, res[0])
                  else:
                       raise ValueError(f'用例【{self.case[title]}】提取表达{exp}式错误'
      
  4. session会话技术

    会话对象可以跨请求保持某些参数。它也会在同一个session实例发出的所有请求之间保持cookie。

    import requests
    s = requests.session()
    login_url = '' 
    data = {"email":"账号","password":"密码","remember":0} # 登录
    res = s.post(url=login_url, data=data)
    res.text
    
    courses_url = '' # 获取课程列表
    res = s.get(courses_url)
    res.json()
    

    拓展session和cookie区别

    1. cookie数据存放在客户的浏览器(客户端)上,session数据放在服务器上,但是服务端的session的实现对客户端的cookie有依赖关系的;
    2. cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,考虑到安全应当使用session;
    3. session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能。考虑到减轻服务器性能方面,应当使用COOKIE;
    4. 单个cookie在客户端的限制是3K,就是说一个站点在客户端存放的COOKIE不能超过3K;
posted @ 2022-07-28 16:03  winkie  阅读(96)  评论(1编辑  收藏  举报