栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Python3+Pytest 接口自动化测试全方案设计与开发-No.2接口自动化框架编写-3-配置文件

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python3+Pytest 接口自动化测试全方案设计与开发-No.2接口自动化框架编写-3-配置文件

1、配置文件

  • ‘Yaml的介绍及安装
    • Yaml介绍
      • Yaml是一种所有编程语言可用的友好的数据序列化标准。语法和其他高阶语言类似,并且可以简单表达字典、列表和其他基本数据类型的形态。
    • yaml格式作为文件的配置格式
      • yaml支持注释
      • 不必强求逗号括号等符号
      • 通过缩进来区分层级,视觉上清晰很多
    • ymal安装
      • pip install PyYaml

  • 快速体验

    ​​​​​​​
  • ​​​​​​​​​​​​​​
  • # @File : yaml_demo.py
    '''
    1、创建yaml格式文件
    2、读取这个文件
    3、输出这个文件
    '''
    
    
    # 2、读取这个文件
    # 1)导入yaml包
    import  yaml
    # 2)打开文件
    with open("./data.yml","r") as f:
    # 3)使用yaml读取文件
        r= yaml.safe_load(f)
    # 3、输出这个文件
        print(r)

Yaml字典和列表介绍

  • 字典
    • 字典里的键值对用“:”分隔。
      • 示例:{"name": "test_yaml", "result", "success"}
      • name: "test_yaml" age: "success" ​​​​​​​
      • 总结:
        • 字典直接写key 和 value ,每一个键值对占一行。
        • : 后面要有空格
    • 列表
      • ​​​​​​​一组按序排列的值(简称“序列或列表”)
      • 示例:["a", "b", "c"]
      • - "a" - "b" - "c"
        • 列表中的元素需要用 -来表示
        • 每一个元素前面都有一个 -,后面接元素内容
        Yaml 字典和列表基本操作
        • 字典嵌套字典
        • 需求 { person1: { "name": "xiaoming", "age": "18" }, person2: { "name": "xiaohong", "age": "20" } }
        • 示例 person1: name: "xiaoming" age: "18" person2: name: "xiaohong" age: "20"
        • 结果 {'person1': {'name': 'xiaoming', 'age': '18'}, 'person2': {'name': 'xiaohong', 'age': '20'}} ​​​​​​​ 字典嵌套列表​​​​​​​​​​​​​​​​​​​​​
          • 需求
          • {person: ["1", "2", "3"]}
          • 示例
                          persion:                 - "1"                 - "2"                 - "3"
          • 结果
            • {'person': ['1', '2', '3']}

           列表嵌套字典

          • 需求
          [{ "username1": "test1" }, { "password1": "111", "username2": "test2", "password2": "222" }] 示例 - username1: "test1" - password1: "111" username2: "test2" password2: "222" 结果 [{'username1': 'test1'}, {'password1': 111, 'username2': 'test2', 'password2': 222}] 列表嵌套列表
          • 需求
          • [["a","b","c"],["1","2","3"]]
          • 示例
          - - "a" - "b" - "c" - - "1" - "2" - "3" 结果 [['a', 'b', 'c'], [1, 2, 3]] 注意: pycharm 会自动将 yaml 中的 tab 转化成空格。但是不能复制 ”tab 键 “ ,不会进行转化。 同级别左侧必须要对齐,少个空格无所谓。 读取 Yaml 文件 读取单个Yaml文档 yaml 文档
          #data.yaml
          "用户名称": "test123"
          "密码": "123456"

          示例函数: demo.py 中文问题 (windows) : encoding='utf-8' import yaml
          import  yaml
          # 2)打开文件
          with open("./data.yml","r",encoding='utf-8') as f:
          # 3)使用yaml读取文件
              data= yaml.safe_load(f)
          # 3、输出这个文件
              print(data)
          读取实际上就是先使用 with open 的形式获取文件对象,再使用 yaml 中的 load 方法加载这个文件对象 , 通过 过 load 方法,一个字符串变成了一个字典 结果 {' 用户名称 ': 'test123', ' 密码 ': '123456'} 5.4.2 读取多个 Yaml 文档 多个文档在一个 yaml 文件,使用 --- 分隔方式来分段 yaml 文档 --- " 用户名称 1": "test123" " 密码 ": "123456" --- " 用户名称 2": "test456" " 密码 ": "123456" 示例
          import yaml
          with open("./data.yaml",'r') as f:
              data = yaml.safe_load_all(f)
              for i in data:
                  print(i)
          ​​​​​​​ 结果 {' 用户名称 1': 'test123', ' 密码 ': '123456'} {' 用户名称 2': 'test456', ' 密码 ': '123456'} yaml 封装
          # @File : YamlUtil.py
          
          # 1、创建类
          import os
          import yaml
          
          class YamlReader:
          # 2、初始化,文件是否存在
              def __init__(self,yamlf):
                  if os.path.exists(yamlf):
                      self.yamlf = yamlf
                  else:
                      raise FileNotFoundError("文件不存在")
                  self._data = None
                  self._data_all = None
          # 3、yaml读取
              #单个文档
              def data(self):
                  #第一次调用data,读取yaml文档,如果不是,直接返回之前保存的数据
                  if not self._data:
                      with open(self.yamlf,'rb') as f:
                          self._data = yaml.safe_load(f)
                      return self._data
              #多个文档
              def data_all(self):
                  #第一次调用data,读取yaml文档,如果不是,直接返回之前保存的数据
                  if not self._data_all:
                      with open(self.yamlf,'rb') as f:
                          self._data_all = list(yaml.safe_load_all(f))
                      return self._data_all
          

           配置文件设置

          配置文件 conf.yaml
          base:
          #log等级
          log_level: "debug"
          #扩展名
          log_extension: ".log"
          test:
          url: "http://211.103.136.242:8064"
          case_file: "testdata.xlsx"
          case_sheet: "美多商城接口测试"

          基本目录配置 ​​​​​​​
          # @File : Conf.py
          import os
          from utils.YamlUtil import YamlReader
          # 1、获取项目基本信息
          #获取当前项目的绝对路径
          current = os.path.abspath(__file__)
          base_DIR = os.path.dirname(os.path.dirname(current))
          #定义config目录的路径
          _config_path = base_DIR+os.sep+"config"
          #定义conf.yml文件的路径
          _config_file = _config_path+os.sep+"conf.yml"
          def get_config_path():
              return _config_path
          def get_config_file():
              return _config_file
          #2、读取配置文件
          #创建类
          class ConfigYaml:
          # 初始化yaml读取配置文件
              def __init__(self):
                  self.config = YamlReader(get_config_file()).data()
          # 定义方法获取需要信息
              def get_conf_url(self):
                  return self.config['base']['test']['url']
          
          if __name__ == '__main__':
              conf_read = ConfigYaml()
              print(conf_read.get_conf_url())

           修改测试用例

          # -*- coding: utf-8 -*-
          # @Time : 2021/12/7 13:47
          # @Author : jeffky
          # @File : Test_Mail.py
          # 1、导包
          from pprint import pprint
          from utils.RequestsUtil import requests_get, requests_post, Request
          from config.Conf import ConfigYaml
          #登录
          '''
          登录成功
          http://211.103.136.242:8064
          /authorizations/
          		POST
          		json
          		{
                      "username":"python",
                      "password":"12345678"
          		}
          		user_id': 1, 'username': 'python'
          '''
          
          
          import requests
          # 2、定义登录方式
          
          conf_y = ConfigYaml()
          url_path = conf_y .get_conf_url()
          def login():
          
          # 3、定义测试数据
              url = url_path+'/authorizations/'
              data = {
                      "username":"python",
                      "password":"12345678"
          		}
          
          # 4、发送POST请求
          #     r = requests_post(url,json=data)
              request = Request()
              r = request.post(url, json=data)
          # 5、输出结果
          #     pprint(r)
              return r['body']
          
          '''
          个人信息	
          获取个人信息正确
          /user/		
          get
          认证:
          ```js
           headers: {
                     'Authorization': 'JWT ' + this.token
           },
          '''
          def info():
              # 1、参数
              url = url_path+'/user/'
              token = login()['token']
              headers={
                  'Authorization': 'JWT ' + token
              }
              # 2、get请求
              # r = requests_get(url,headers = headers)
              request =Request()
              r = request.get(url,headers = headers)
              # 3、输出
              pprint(r)
          '''
          商品列表数据正确	
          请求方式: GET `/categories/(?Pd+)/skus?page=xxx&page_size=xxx&ordering=xxx`
          /categories/115/skus/		
          get	json	
           {
           "page":"1",
           "page_size": "10",
           "ordering": "create_time"
           }
          
          '''
          def goods_list():
              # 1、参数
              url =  url_path+'/categories/115/skus/'
              data = {
           "page":"1",
           "page_size": "10",
           "ordering": "create_time"
           }
          
              # 2、get请求
              # r = requests_get(url,json= data)
              request =Request()
              r = request.get(url,json=data)
              # 3、输出
              pprint(r)
          
          '''
          添加购物车成功	
          /cart/	
          login_4	post	
          json	
          {"sku_id": "3","count": "1", "selected": "true"}	
          		
          {"Authorization": "JWT ${token}$"}
          
          
          '''
          def cart():
              # 1、参数
              url =  url_path+'/cart/'
              token = login()['token']
              headers={
                  'Authorization': 'JWT ' + token
              }
              data = {"sku_id": "3","count": "1", "selected": "true"}
              # 2、get请求
              # r = requests_post(url,headers = headers,json=data)
              request =Request()
              r = request.get(url,headers = headers,json=data)
              # 3、输出
              pprint(r)
          '''
          保存订单	
          /orders/	
          post
          login_4	post	
          json	
          { "address":"1","pay_method":"1" }
          {"Authorization": "JWT ${token}$"}
          '''
          def order():
              # 1、参数
              url =  url_path+'/orders/'
          
              token = login()['token']
              headers={
                  'Authorization': 'JWT ' + token
              }
              data = { "address":"1","pay_method":"1" }
              # 2、get请求
              # r = requests_post(url,headers = headers,json=data)
              request =Request()
              r = request.post(url,headers = headers,json=data)
              # 3、输出
              pprint(r)
          
          if __name__ == '__main__':
              login()
              # info()
              # goods_list()
              # cart()
              # order()

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/642275.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号