zoukankan      html  css  js  c++  java
  • 使用cmd模块,让脚本更舒服些

    平时由于经常给测试人员调试一些东西,虽然写了一些脚本,感觉还是不方便。

    python的cmd模块提供的更优雅的方式,很喜欢。

    刚写了一些平时常用的测试代码:

    # -*- coding:utf-8 -*-
    
    import os, sys
    from datetime import datetime
    import cmd
    import warnings
    
    
    from django.conf import settings
    
    
    def not_exit(func):
        def _func(*args, **kwargs):
            try:
                res = func(*args, **kwargs)
                return res
            except:
                print "there is a wrong in %s, please input 'help %s' to get help" %  (func.__name__, func.__name__[3:])
                return None
        return _func
    
    class NBScript(cmd.Cmd):
        
        def __init__(self):
            cmd.Cmd.__init__(self)
            #设置命令提示符
            self.prompt = '> '
            #配置django环境
            pathname = os.path.dirname(sys.argv[0])
            sys.path.append(os.path.abspath(pathname))
            sys.path.append(os.path.normpath(os.path.join(os.path.abspath(pathname), '../')))
            os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
    
        #清用户cache
        def help_clear_cache(self):
            print "Usage:clear_cache [sns_id]"
            print "-- clear the user's cache"
    
        @not_exit
        def do_clear_cache(self, sns_id):
            from scripts.update_cache import clear_member_all_cache
            clear_member_all_cache(sns_id)
    
        #用户升级
        def help_user_level_up(self):
            print "Usage:user_level_up [sns_id] [level]"
            print "-- level up the user to the level"
    
        @not_exit
        def do_user_level_up(self, parms):
            from apps.members.cache import get_member_by_sns_id, get_or_create_almanac_info
            from apps.members.constants import EXP_LEVEL
            
            sns_id, level = parms.split()
            sns_id = int(sns_id)
            level = int(level)
            member = get_member_by_sns_id(sns_id)
            al_info = get_or_create_almanac_info(member.id)
            al_info.exp = EXP_LEVEL[level-1] + 1
            al_info.save()
    
        #增加用户珍珠
        def help_add_pearls(self):
            print "Usage:add_pearls [sns_id] [pearls]"
            print "-- add some pearls to the user"
    
        @not_exit
        def do_add_pearls(self, parms):
            from platforms.account.helper import add_account_pearls
            
            sns_id, pearls = parms.split()
            sns_id = int(sns_id)
            pearls = int(pearls)
            add_account_pearls('', '', sns_id, pearls, type='Test', money=0)
    
        #分鱼
        def help_add_fishes(self):
            print "Usage:add_fishes [sns_id] [fish1 fish2 ...]"
            print "-- add some fishes to the user"
    
        @not_exit
        def do_add_fishes(self, parms):
            from apps.members.cache import get_member_by_sns_id
            from apps.members.helper import new_a_member_fish
            from apps.products.cache import get_fish
            
            array = parms.split()
            sns_id = int(array[0])
            fish_ids = [int(i) for i in array[1:]]
            member = get_member_by_sns_id(sns_id)
            for fish_id in fish_ids:
                fish = get_fish(fish_id)
                new_a_member_fish(member, fish.id, update_almanac=True)
    
        #分贝壳
        def help_add_shells(self):
            print "Usage:add_shells [sns_id] [shells]"
            print "-- add some shells to the user"
    
        @not_exit
        def do_add_shells(self, parms):
            from apps.members.cache import get_member_by_sns_id
            
            sns_id, num = parms.split()
            sns_id = int(sns_id)
            num = int(num)
            member = get_member_by_sns_id(sns_id)
            member.shells += num
            member.save()
    
        #分鱼食
        def help_add_fish_food(self):
            print "Usage:add_fish_food [sns_id] [food_num]"
            print "-- add some food to the user"
    
        @not_exit
        def do_add_fish_food(self, parms):
            from apps.members.cache import get_member_by_sns_id
            
            sns_id, num = parms.split()
            sns_id = int(sns_id)
            num = int(num)
            member = get_member_by_sns_id(sns_id)
            member.fish_food += num
            member.save()
    
        #分鱼缸
        def help_add_fish_tanks(self):
            print "Usage:add_fish_food [sns_id] [tank1,tank2 ...]"
            print "-- add some tanks to the user"
    
        @not_exit
        def do_add_fish_tanks(self, parms):
            from apps.members.cache import get_member_by_sns_id
            from apps.members.helper import new_a_member_tank
            from apps.products.cache import get_fish_tank
            
            array = parms.split()
            sns_id = int(array[0])
            tank_ids = [int(i) for i in array[1:]]
            member = get_member_by_sns_id(sns_id)
            for tank_id in tank_ids:
                tank = get_fish_tank(tank_id)
                new_a_member_tank(member, tank.id)
    
        #分道具
        def help_add_items(self):
            print "Usage:add_items [sns_id] [itme1,item2 ...]"
            print "-- add some itmes to the user"
    
        @not_exit
        def do_add_items(self, parms):
            from apps.members.cache import get_member_by_sns_id
            from apps.members.helper import new_a_member_item
            from apps.products.cache import get_item
            
            array = parms.split()
            sns_id = int(array[0])
            item_ids = [int(i) for i in array[1:]]
            member = get_member_by_sns_id(sns_id)
            for item_id in item_ids:
                item = get_item(item_id)
                new_a_member_item(member, item.id)
    
        #刷任务
        def help_refresh_task(self):
            print "Usage:refresh_task [sns_id]"
            print "-- refresh user's task"
    
        @not_exit
        def do_refresh_task(self, sns_id):
            from apps.members.cache import get_member_by_sns_id
            
            sns_id = int(sns_id)
            member = get_member_by_sns_id(sns_id=sns_id)
            member.task_start_time = None
            member.save()
    
        #调合成等级
        def help_synthesis_level_up(self):
            print "Usage:synthesis_level_up [sns_id] [level]"
            print "-- level up user's synthesis level"
    
        @not_exit
        def do_synthesis_level_up(self, parms):
            from apps.members.cache import get_member_by_sns_id
            from apps.synthesis.cache import get_or_create_synth_info
            
            sns_id, lev = parms.split()
            sns_id = int(sns_id)
            lev = int(lev)
            member = get_member_by_sns_id(sns_id=sns_id)
            exp = int(sum([i**1.5*20 for i in range(1,lev+1)]))
            member = get_member_by_sns_id(sns_id)
            synth = get_or_create_synth_info(member.id)
            synth.synth_exp = exp
            synth.save()
    
    
    
    
    
        def help_quit(self):
            print "Usage:quit"
    
        def do_quit(self, line):
            exit()
    
        do_q = do_quit
    
    if __name__ == "__main__":
        nb_script = NBScript()
        nb_script.cmdloop()
    

    权当cmd模块的简单学习了。

  • 相关阅读:
    HDOJ 2095 find your present (2)
    HDOJ 2186 悼念512汶川大地震遇难同胞——一定要记住我爱你
    九度 1337 寻找最长合法括号序列
    九度 1357 疯狂地Jobdu序列
    HDOJ 1280 前m大的数
    九度 1343 城际公路网
    九度 1347 孤岛连通工程
    HDOJ 2151 Worm
    九度 1342 寻找最长合法括号序列II
    九度 1346 会员积分排序
  • 原文地址:https://www.cnblogs.com/imouren/p/2100357.html
Copyright © 2011-2022 走看看