美文网首页
6. YAML自定义

6. YAML自定义

作者: 薛东弗斯 | 来源:发表于2024-02-12 12:56 被阅读0次

Python库——Faker - 知乎 (zhihu.com)

initial code

from faker import Faker
fake = Faker(locale="zh-CN")

def func_yaml(data):
    if isinstance(data,dict):
        for k,v in data.items():
            if 'random' in str(v):   # int is not iterable
                data[k] = eval(str(v))
    return data

def random_name():
    return fake.name()

if __name__=='__main__':
    data = { 'name': 'random_name()', 'age': 18, 'sex': 'male' }
    print(func_yaml(data))
{'name': '林玲', 'age': 18, 'sex': 'male'}

字典调用

from faker import Faker
import random
fake = Faker(locale="zh-CN")

def random_name():
    return fake.name()

def func_yaml(data, res=None):
    if isinstance(data, dict):
        for key, value in data.items():
            if '${' in str(value) and '}' in str(value):
                start = str(value).index('${')
                end = str(value).index('}')
                func_name = str(value)[start + 2:end]
                data[key] = str(value)[0:start] + str(eval(func_name)) + str(value)[end + 1:len(str(value))]
    return data

def age():
    return random.randint(1, 100)


if __name__ == '__main__':
    data = {'name': "上海-${random_name()}-测试", 'age': "${age()}" , 'sex': 'male'}
    print(func_yaml(data))

{'name': '上海-李桂香-测试', 'age': '33', 'sex': 'male'}

data.yaml

#config > data.yaml
person:
  name: 上海-${random_name()}-测试组
  age: ${age()}
  sex: male
# utilils > read_data.py
import yaml
import os

current_path = os.path.realpath(__file__)
parent_path = os.path.dirname(current_path)
path = os.path.join(os.path.dirname(parent_path), "config", "data.yaml")


def read_data():
    f = open(path, encoding="utf8")
    data = yaml.safe_load(f)
    return data

get_data = read_data()
# utils > utils_yamal.py
from faker import Faker
import random
import time
fake = Faker(locale="zh-CN")

def random_name():
    return fake.name()

def func_yaml(data, res=None):
    if isinstance(data, dict):
        for key, value in data.items():
            if '${' in str(value) and '}' in str(value):
                start = str(value).index('${')
                end = str(value).index('}')
                func_name = str(value)[start + 2:end]
                data[key] = str(value)[0:start] + str(eval(func_name)) + str(value)[end + 1:len(str(value))]
    return data

def age():
    return random.randint(1, 100)

def local_time():
    return time.strftime('%Y%m%d-%H%M%S', time.localtime())


if __name__ == '__main__':
    data = {'name': "上海-${random_name()}-测试", 'age': "${age()}" , 'sex': 'male'}
    print(func_yaml(data))

# testcase > test_person.py
from utils.read_data import get_data
from utils.utils_yaml import func_yaml

def test_person():
    data = get_data["person"]
    print(func_yaml(data))

if __name__=='__main__':
    test_person()
# result
{'name': '上海-何丹-测试组', 'age': '26', 'sex': 'male'}

parametrize

相关文章

网友评论

      本文标题:6. YAML自定义

      本文链接:https://www.haomeiwen.com/subject/phzdadtx.html