• robot源码解读8【aliasing_scope】


    1. aliasing
    
    '''
    ##################
    '''
    #
    # class Animal:
    #     def __init__(self, favourite_food):
    #         self.favourite_food = favourite_food
    #
    #
    # class Zoo:
    #     def new_animal(self, favourite_food):
    #         return Animal(favourite_food)
    #
    #     def feed(self, food, animal):
    #         print("Im giving {} to {}.".format(food, animal))
    #
    #     def get_favourite_food(self, animal):
    #         return animal.favourite_food
    #
    #
    # z1 = Zoo()
    # animal = z1.new_animal('beef')
    # food = z1.get_favourite_food(animal)
    # z1.feed(food, animal)
    
    '''
    Previously, to use these keywords in Robot Framework, you would have to do
    this:
    
        ${animal}=    New animal    beef
        ${food}=      Get favourite food
        Feed          ${food}       ${animal}
    
    After the aforementioned modifications, these keywords can be used in the
    following way:
    
        New animal    beef                    Lion
        ${food}=      Get favourite food      Lion
        Feed          ${food}                 Lion
    '''
    
    
    
    '''
    ##################
    '''
    # from taf.internal.aliasing import aliasing_scope
    from aliasing import aliasing_scope
    import logging
    
    
    logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s:%(message)s')
    logger = logging.getLogger(__name__)
    
    
    class Animal:
        def __init__(self, favourite_food):
            self.favourite_food = favourite_food
    
    
    class Man:
        def __init__(self, favourite_food):
            self.favourite_food = favourite_food
    
    
    class Zoo:
        # lookup_handler, store = aliasing_scope()
        lookup_handler, store = aliasing_scope('animal', Animal, 'test_aliasing_scope')
        # lookup_handler, store = aliasing_scope('animal', Animal)
        # lookup_handler_man, store_man = aliasing_scope('man', Man, 'test2')
    
        print('lookup_handler: ', lookup_handler.__dict__)
        print('store         : ', store.__dict__)
    
        def new_animal(self, favourite_food, name=None):
            new_animal = Animal(favourite_food)
            self.store.add(new_animal, name)
            print('def new_animal: ',self.store.__dict__)
            return new_animal
    
        # def new_man(self, favourite_food, name=None):
        #     new_man = Man(favourite_food)
        #     self.store_man.add(new_man, name)
        #     print('def new_man: ',self.store.__dict__)
        #     return new_man
    
        @lookup_handler.implicit_lookup('animal')
        def feed(self, food, animal):
            print("Im giving {} to {}.".format(food, animal))
    
        # @lookup_handler_man.implicit_lookup
        # def eat(self, food, man):
        #     print("{} is eating {} .".format(man, food))
    
        # @lookup_handler.implicit_lookup('animal')  # 前面lookup_handler, store = aliasing_scope(),这里需要指定 animal
        # @lookup_handler.implicit_lookup('animal222') # 默认就这样用
        @lookup_handler.implicit_lookup('animal222')
        def get_favourite_food(self, animal222):
            return animal222.favourite_food
    
    
    
    
    z1 = Zoo()
    # animal
    # Lion = z1.new_animal('beef')  # 主要是替换这种用法,Lion不用对象,可以用字符串
    # z1.new_animal('beef', 'Lion')
    # food = z1.get_favourite_food('Lion')
    # z1.feed(food, 'Lion')
    
    
    # 原始用法
    # print('@@')
    # Lion2 = z1.new_animal('beef')
    # food2 = z1.get_favourite_food(Lion2)
    # z1.feed(food2,Lion2)
    # print('@@')
    
    
    # default
    # z1.new_animal('food')
    # food = z1.get_favourite_food('amize_default')
    # z1.feed(food,'amize_default')
    
    
    # man
    # z1.new_man('rice', 'Jhon')
    # z1.eat('rice', 'Jhon')
    
    
    
    
  • 相关阅读:
    python 生成器 迭代器
    廖---高级特性 切片 迭代 列表生成式
    汉诺塔
    廖---函数
    廖---控制流
    廖---list tuple dic set
    廖---字符串和编码
    MySQL常见的三种存储引擎
    mysql悲观锁以及乐观锁总结和实践
    数据库事务的四大特性以及事务的隔离级别
  • 原文地址:https://www.cnblogs.com/amize/p/15045148.html
Copyright © 2020-2023  润新知