数据驱动

1.1理论

  • 什么是数据驱动?
以测试数据驱动用例执行(测试数据和代码分离)
  • 为什么要数据驱动?
便于维护(维护的焦点从代码转到测试数据)
  • 数据驱动如何操作?
1. 编写数据存储文件
2. 编写读取数据工具
3. 使用参数化引用

1.2实际操作

  • 编写存储文件
口诀:
1、新建json文件,在文件中编写一个{}
2、有几个模块,写几个Key,值为列表
3、列表中参数化数据有几组,就写几个{}
3、每个{}中组成->说明+参数数据+预期结果

  • 步骤1 编写json文件
{
  "login": [
    {"desc": "登录成功",
    "username": "15352932935",
      "password": "123456",
      "code": "8888",
      "expect":"15352932935"
    }

  ]
}
  • 步骤2、读取工具封装
import json
import os.path


def read_json(filename, key):
    path = os.path.dirname(__file__) + "/" + "data" + "/" + filename
    print(path)
    with open(path, encoding="utf-8") as f:
        arr = []
        for data in json.load(f).get(key):
            # print(data.values())
            tmp = tuple(data.values())[1:]
            arr.append(tmp)
        return arr


# read_json("login.json", "login")

  • 步骤3 参数化引用
    @parameterized.expand(read_json("login.json", "login"))
    def test01_login(self, username, password, code, expect):
        try:
            print(username,password,code,expect)
            self.login.page_login(username, password, code)
            sleep(3)
            # html=self.driver.execute_script("return document.documentElement.outerHTML")
            # print(html)
            ncikname = self.login.get_nickname()
            print(self.login.get_nickname())
            self.assertEqual(ncikname, expect)
        except Exception as e:
            print("错误信息:",e)