[day22] 快速产生测试资料

功能测试时很常需要删掉坏掉的资料库纪录,这时就需要重置测资,但每次都开管理工具来做太麻烦了,写个小工具产生好了

插入测资功能叙述

自动插入

  1. 6种商品类别
  2. 插入5种商品

手动插入

  1. 商品类别
  2. 商品

实作简易的测资插入功能

加入命令列argparse分类

dblist = ['cart_items', 'coupon', 'customers', 'messaging_log', 'orders', 'payment_log', 'product_category', 'products', 'shopping_cart']

def askyes():
    val = input("Confirm to Do(Y/N):").lower()
    if(val == 'y' or val == 'yes'):return True
    else:return False

def loadargs():
    parser = argparse.ArgumentParser()
    
    subparsers = parser.add_subparsers(title='资料库控制', description='呼叫资料库命令', dest='subparser_name')

    init = subparsers.add_parser('init')
    init.add_argument('target', choices=dblist, help='初始化资料库目标')
    init.add_argument('-y', '--yes', action='store_true', help='确认执行')
    init.set_defaults(func = doinit)

    add = subparsers.add_parser('add')
    add.add_argument('target', choices=dblist, help='新增纪录')
    add.add_argument('-y', '--yes', action='store_true', help='确认执行')
    add.set_defaults(func = doadd)
    return parser.parse_args()

args = loadargs()
dbpm = DBPm()
print(args)
args.func(dbpm, args)

init sub argparse

def init_product_category(dbpm:DBPm, yes=False):
    if(not yes):yes = askyes()
    if(not yes):return False

    drink_cate = ['酒','茶','果汁','碳酸饮料','咖啡','其他']
    drink_decp = ['酒(英语:Alcoholic beverage),其中含有0.5%至96%的酒精(即乙醇)。为人类饮用历史最长的加工饮品之一,由植物发酵制成。', \
                '茶,是指利用茶树的叶子所加工制成的饮料,多烹[3]成茶汤饮用,也可以加入食物中调味,也可入中药使用。[4]现代的茶按制作工序主要分爲六大类,绿茶、白茶、黄茶、青茶、红茶、黑茶[5]。茶大多种植在梯田(为了灌溉方便)。', \
                '蔬果汁,常简称果汁,是指从新鲜水果或蔬菜榨汁而成的一种饮料。', \
                '碳酸饮料又称汽水,是充入二氧化碳气体的软性饮料,其中包括日常汽水,如七喜、可乐、碳酸水及沙士、麦根沙士雪碧等。', \
                '咖啡(英语:coffee)是采经过烘焙过程的咖啡豆(咖啡属植物的种子)所制作冲泡的饮料。', \
                '如牛奶、豆浆、蜂蜜水、气泡水、运动饮料等.....']
    for dc, de in zip(drink_cate, drink_decp):
        try:
            dbpm.INS_Prod_Cat(dc, de)
        except Exception as Err:
            print(Err)
            return False
    return True

def init_products(dbpm:DBPm, yes=False):
    if(not yes):yes = askyes()
    if(not yes):return False

    drink_products = ['可口可乐Zero易开罐330ml(24入)', '可口可乐-易开罐330ml (24入/箱)', '【味丹】激浪汽水-冰晶柠檬风味', '七喜汽水330ml(24入)', '百事可乐 250ml(24入)']
    drink_quantity = [99,98,97,96,95]
    drink_product_decp = ['此品新旧包装随机出货,如可接受再购买', '新旧包装随机出货,如可接受再购买', '清爽透明系 减糖少负担\n清新柠檬莱姆风味\n顺畅气泡 瞬间振奋', \
                        '★清凉畅快\n★柠檬口味', '★Dare for more\n★渴望、探索、创造']
    drink_product_s_time = []
    drink_product_e_time = []
    for i in range(len(drink_products)):
        if(i<=1):
            st, et = dbpm.timedelta_bydays()
            drink_product_s_time.append(st)
            drink_product_e_time.append(et)
        else:
            st, et = dbpm.timedelta_bydays(days=730)
            drink_product_s_time.append(st)
            drink_product_e_time.append(et)
    drink_product_cate = '碳酸饮料'
    drink_product_price = [288, 288, 519, 309, 249]

    for dp,dq,de,dst,det,dpi in zip(drink_products, drink_quantity, drink_product_decp, drink_product_s_time, drink_product_e_time, drink_product_price):
        try:
            dbpm.INS_Prod(dp, dq, de, dst, det, drink_product_cate, dpi)
        except Exception as Err:
            print(Err)
            return False
    return True

def doinit(dbpm:DBPm, args):
    r = False
    if(args.target == 'product_category'):
        print("插入product_category测试资料")
        r = init_product_category(dbpm=dbpm, yes=args.yes)
    elif(args.target == 'products'):
        print("插入products测试资料")
        r = init_products(dbpm=dbpm, yes=args.yes)

    if(r):print("成功")
    else:print("失败")

手动插入

def add_product_category(dbpm:DBPm, yes=False):
    try:
        cate = input("商品类别:")
        decp = input("商品类别说明:")
        if(not yes):yes = askyes()
        if(not yes):return False
        dbpm.INS_Prod_Cat(cate, decp)
    except Exception as Err:
        print(Err)
        return False
    return True

def add_products(dbpm:DBPm, yes=False):
    try:
        p_name = input("商品:")
        p_quantity = input("商品库存:")
        p_decp = input("商品说明:")
        daydiff = int(input("剩余有效天数:"))
        p_st, p_et = dbpm.timedelta_bydays(days=daydiff)
        p_cate = input("商品类别:")
        p_price = int(input("价格:"))
        if(not yes):yes = askyes()
        if(not yes):return False
        dbpm.INS_Prod(p_name, p_quantity, p_decp, p_st, p_et, p_cate, p_price)
    except Exception as Err:
        print(Err)
        return False
    return True

https://ithelp.ithome.com.tw/upload/images/20211004/20140853U9ImVNynZA.png
https://ithelp.ithome.com.tw/upload/images/20211004/20140853KirVQdObUM.png

接下来几天会在调整一下,把加入购物车/库存连动作出来


<<:  [18] 登入後将用户资料纪录

>>:  追求JS小姊姊系列 Day19 -- 工具力,原来如此:原型与原型链。

DAY07_终於要来资产搬点啦~啊~不是~是盘点XDDD" 搬点是要搬家是吗~

前言依旧被吃了~跟月饼一样(虽然明天才是中秋节XD) ▉前导观念~先理解这两个数值是怎麽评分的~ (...

Day 17 | FPS灭火AR游戏开发 Part2 - 火焰粒子系统制作

目录 火焰制作 上一篇实作了简易的粒子系统(水柱),那今天就要实作稍微复杂多层次的粒子系统,那就开...

JavaScript函式

认识函式 函式是一组定义好的程序叙述。随着程序开发的内容与日俱增,在操作时会有许多相同的程序动作与判...

【第三十天 - 结论】

本系列文章复习了一些业界常考演算法 从中也一再的复习/整理自己所学,厘清一些概念,希望大家经过一系...

Day-29 番外篇:放下笨重的变压器、电源线瘦身计画

以总集篇的设备来说、在把所有视讯线配好、其实还有电源的问题待解决。我随手一拿少说也有↓这麽多变压器、...