Python —— yaml文件替換變量


前言

測試過程中需要造數據,在yaml文件使用變量名占位,在加載數據時填充進去。

displace.py 定義處理變量的方法,使用遞歸遍歷。

# 同級目錄下的文件使用from . 導入
from . import create_data


def analyze_data(data):
    """
    遞歸解析json數據
    :param data: 數據源
    :return:
    """
    # 判斷是否是字典
    if isinstance(data, dict):
        # 遍歷key,value
        for k, v in data.items():
            # value是字典、列表或者元組,遞歸。
            if isinstance(v, (dict, list, tuple)):
                analyze_data(v)
            else:
                # value是字符串,檢查是否是特殊變量,是則替換
                if str_dispose(v):
                    data[k] = variable_substitution(v)
    if isinstance(data, (list, tuple)):
        for i in range(len(data)):
            data[i] = analyze_data(data[i])
        return data

    else:
        if str_dispose(data):
            data = variable_substitution(data)
        return data


def variable_substitution(s):
    """變量替換從指定的文件中找方法"""
    name = str(s).replace("${", "").replace("}", "")
    if hasattr(create_data, name):
        # 通過反射招到create_data文件中找方法
        func = getattr(create_data, name)
        return func()
    else:
        return "not found!"


def str_dispose(_str):
    """判斷字符串是否包含${}字符"""
    return True if str(_str).startswith("${") and str(_str).endswith("}") else False

create_data.py 定義方法返回變量需要替換的值

import random

from faker import Faker

"""
在這里寫生成測試數據的方法,yaml文件中用“${變量名}調用”
"""

f = Faker(locale='zh_CN')


# 隨機生成一個姓名
def name(): return f.name()


# 隨機生成電話號碼
def phone(): return f.phone_number()


# 隨機公司名稱
def company(): return f.company()


# 隨機生成一篇文章
def text(): return f.text()


# 隨機身份證號
def ssn(): return f.ssn()


# 隨機段落
def paragraph(): return f.paragraph()


# 隨機一句話
def sentence(): return f.sentence()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM