• pytest数据驱动(最简单)


    pytest数据驱动(最简单)

    第一种:通过yaml文件获取数据(一维列表)

    data.yaml文件内容如下:

    - '软件测试'
    - '单元测试'
    - '自动化测试'
    - '性能测试'
    - '测试开发'
    - '测试架构师'

    测试用例内容如下:

    @pytest.mark.parametrize('data',  yaml.load(open('data.yml', 'r')))
    def test_ddt(data):

      url='https://www.baidu.com/search/query?key='
      header = {'Accept': "application/json",
          'Content-Type': "application/json; charset=utf-8",
          'Accept-Encoding': "gzip, deflate, br"}

      res=requests.get(url+data, header)
      assert res.status_code==200

    第二种:通过yaml文件获取数据(二维列表)

    data.yaml文件内容如下:

    #用例1
    -
    api_name: page_title
    url: http://www.baidu.com/
    header = {'Accept': "application/json",
         'Content-Type': "application/json; charset=utf-8",
         'Accept-Encoding': "gzip, deflate, br"}
    data: {
    "status_code": 200
    }


    #用例2
    -
    api_name: searching
    url: http://www.baidu.com/
    header = {'Accept': "application/json",
         'Content-Type': "application/json; charset=utf-8",
         'Accept-Encoding': "gzip, deflate, br"}
    data: {
    "status_code": 200
    }


    #用例3
    -
    api_name: login
    url: http://www.baidu.com/
    header = {'Accept': "application/json",
         'Content-Type': "application/json; charset=utf-8",
         'Accept-Encoding': "gzip, deflate, br"}
    data: {
    "status_code": 200
    }

    测试用例内容如下:

    @pytest.mark.parametrize('data', yaml.load(open('data.yml', 'r')))
    def test_ddt(data):
           api_name = data['api_name']
      url=data['url']
      header = data['header']

      res=requests.get(url + api_name, header)
      assert   res.status_code ==data['data']['status_code']

    第三种:通过yaml文件获取数据(@pytest.fixture)

    @pytest.fixture()
    def login(request):
      name = request.param
      print(f"== 账号是:{name} ==")
      return name

    data = ["pyy1", "polo"]

    @pytest.mark.parametrize("login", data, indirect=True)
    def test_name(login):
      print(f" 测试用例的登录账号是:{login} ")


    @pytest.fixture()
    def logins(request):
      param = request.param
      print(f"账号是:{param['username']},密码是:{param['pwd']}")
      return param

    data = [ {"username": "name1", "pwd": "pwd1"},  {"username": "name2", "pwd": "pwd2"} ]

    @pytest.mark.parametrize("logins", data, indirect=True)
    def test_name_pwd(logins):
      print(f"账号是:{logins['username']},密码是:{logins['pwd']}")

    # 多个fixture
    @pytest.fixture(scope="module")
    def input_user(request):
      user = request.param
      print("登录账户:%s" % user)
      return user

    @pytest.fixture(scope="module")
    def input_psw(request):
      psw = request.param
      print("登录密码:%s" % psw)
      return psw

    data = [("name1", "pwd1"),  ("name2", "pwd2")]

    @pytest.mark.parametrize("input_user,input_psw", data, indirect=True)
    def test_more_fixture(input_user, input_psw):
      print("fixture返回的内容:", input_user, input_psw)

    name = ["name1", "name2"]
    pwd = ["pwd1", "pwd2"]

    @pytest.mark.parametrize("input_user", name, indirect=True)
    @pytest.mark.parametrize("input_psw", pwd, indirect=True)
    def test_more_fixture(input_user, input_psw):
      print("fixture返回的内容:", input_user, input_psw)

  • 相关阅读:
    shell管道和重定向
    shell脚本
    Hexo学习笔记--常用命令及部署步骤
    Git学习笔记--Git常用命令
    Spark link集合
    Struts2学习笔记--Struts2的体系结构
    JNI错误记录--JNI程序调用本地库时JVM崩溃
    Hibernate学习笔记--使用ThreadLocal
    Hibernate学习笔记--核心编程
    Hibernate学习笔记--映射配置文件详解
  • 原文地址:https://www.cnblogs.com/111testing/p/16847976.html
Copyright © 2020-2023  润新知