【Web_接口測試_Python3_yaml基礎配置庫】地址/郵箱/參數等配置文件管理和讀取,自動化測試案例

--- # develop(鍵值對,值默認爲字符串)
basic:
  # 地址參數
  request_url: ""
  get_userinfo: ""
  topcardweb_url: ""
  swagger_url: ""
  # 賬戶密碼
  mortgage_username: ""
  mortgage_password: ""
  # 進件參數
  ProvinceCode: ""
  CityCode: ""
  AreaCode: ""
  Address: ""
  productId: ""
  merchantId: ""
  storeId: ""
  custMgrId: ""
  loanPeriod: ""
  sfz_filepicture_dict1:
    {
      "fileKind": "1",
#      "fileUrl": "http://,  # 人像
      "fileUrl": "http://",  # 人像
      "fileName": "身份證正面"
    }
  sfz_filepicture_dict2:
    {
      "fileKind": "2",
#      "fileUrl": "http://",
      "fileUrl": "http://",
      "fileName": "身份證背面"
    }
  # 合同參數
#  preCreditApplySave_compactId: ""
#  preCreditApplySave_compactType: ""
#  commitPreCreditInfo_compactId: ""
#  commitPreCreditInfo_compactType: ""
  queryCompactDetail_compactId: ""
  queryCompactDetail_compactType: ""
  commitLoanApply_compactId: ""
  commitLoanApply_compactType: ""
  reSignContractList_compactId: ""
  reSignContractList_compactType: ""
  affiliatedAuthContract_compactId: ""
  affiliatedAuthContract_compactType: ""
#  compactId: "4387318610540437635"
#  compactType: "90"
database_info:
  database_name: "mysql"
  database_prefix: ""
  host: ""
  username: ""
  password: ""
  port: ""
  database_differences: ""
#!/usr/bin/env/python3
# -*- coding:utf-8 -*-
'''
Author:leo
Date&Time:2020/5/4 and 10:24
Project:Python3
FileName:comment_txt.py
Description:
1.yaml [ˈjæməl]: Yet Another Markup Language :另一種標記語言。
yaml 是專門用來寫配置文件的語言,非常簡潔和強大,之前用ini也能寫配置文件,看了yaml後,發現這個更直觀,更方便,有點類似於json格式

2.yaml基本語法規則:
大小寫敏感
使用縮進表示層級關係
縮進時不允許使用Tab鍵,只允許使用空格。
縮進的空格數目不重要,只要相同層級的元素左側對齊即可
#表示註釋,從這個字符一直到行尾,都會被解析器忽略,這個和python的註釋一樣

3.yaml支持的數據結構有三種:
對象:鍵值對的集合,又稱爲映射(mapping)/ 哈希(hashes) / 字典(dictionary)
數組:一組按次序排列的值,又稱爲序列(sequence) / 列表(list)
純量(scalars):單個的、不可再分的值。字符串、布爾值、整數、浮點數、Null、時間、日期

4.多個文檔在一個yaml文件,使用 --- 分隔方式來分段
load_all讀取
'''
class Yaml_config():
    def yaml_write(self, data=None, mode='a+', yamlPath="D:\Mytest\Python3\Python3\...\...\config\config.yaml"):
        """
        @param data:     寫入的數據(字典、列表、字符串)
        @param yamlPath: 生成文件的路徑
        @return:         f.read()對象(dict)
        """
        import yaml
        with open(yamlPath, mode=mode, encoding='utf-8') as file_write, open(yamlPath, 'r', encoding='utf-8') as file_read:
            yaml.dump(data, file_write)                # 裝載數據
            read_all = file_read.read()  # 讀取文件
            load_all = yaml.safe_load(read_all)        # 加載數據
            print(f"----寫入配置文件:{type(load_all)}----\n{load_all}\n")  # 打印數據
            return load_all
    def yaml_read(self, readnum="load_all", yamlPath="D:\Mytest\Python3\Python3\...\...\config\config.yaml"):
        import yaml
        f = open(yamlPath, 'r', encoding='utf-8')
        if readnum == "load_one":
            read_all = f.read().replace("---", "").replace("'", '''"''')  # 讀取文件
            load_one = yaml.safe_load(read_all)
            # print(f"----讀出配置文件:{type(load_one)}\n{load_one}")  # 打印數據
            return load_one
        elif readnum == "load_all":
            read_all = f.read()  # 讀取文件
            load_all = [i for i in yaml.safe_load_all(read_all)]
            # print(f"----讀出配置文件:{type(load_all)}\n{load_all}")  # 打印數據
            return load_all
    def write_configparser(self, yamlPath="D:\Mytest\Python3\Python3\...\...sit\config\\test.ini"):
        import configparser
        config = configparser.ConfigParser()
        config.add_section("AXIS_0")
        config.set("AXIS_0", "time", "500")
        config.set("AXIS_0", "acc", "10")
        config.add_section("AXIS_1")
        config.set("AXIS_1", "time", "250")
        config.write(open(yamlPath, "w"))
if __name__ == '__main__':
    # 寫入
    # dev_database = {"dev_database_info": {"host": "", "port": "", "database_name": "", "database_prefix": "", "username": "", "password": ""}}
    # Yaml().yaml_write(data=dev_database, mode='a+')

    # # # 讀出
    # load_one = Yaml().yaml_read(readnum="load_one")
    cofing_load_all = Yaml_config().yaml_read(readnum="load_all")
    for i in cofing_load_all:
        print(type(i), i)
    cofing_dict = cofing_load_all[2]
    # get_basic = cofing_load_all[2]['basic']['request_url']
    # get_database = cofing_load_all[2]['database_info']['database_name']
    get_dev = cofing_dict['database_info']['database_prefix']
    get_basic = cofing_dict['basic']['sfz_filepicture_dict1']["fileUrl"]
    get_database = cofing_dict['database_info']['database_differences']

    database = {
        "host": cofing_dict['database_info']['host'],
        "port": cofing_dict['database_info']['port'],
        "database_name": cofing_dict['database_info']['database_name'],
        "database_prefix": cofing_dict['database_info']['database_prefix'],
        "username": cofing_dict['database_info']['username'],
        "password": cofing_dict['database_info']['password'],
        "database_differences": cofing_dict['database_info']['database_differences'],
        "database_differences1": cofing_dict['basic']['sfz_filepicture_dict1']["fileUrl"]
    }
    print(type(database), database)
    # print(type(get_basic), get_basic)

    # print(type(load_all[cofing_dict['database_info']['database_prefix'] + "_" + "database_info']['database_name']), load_all[cofing_dict['database_info']['database_prefix'] + "_" + "database_info']['database_name'])
    # print(type(load_all['timeout']), load_all['timeout'])

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章