• Robot Framework 源码阅读 day1 __main__.py


    robot文件夹下的__main__.py函数 是使用module运行时的入口函数:

     1 import sys
     2 
     3 # Allows running as a script. __name__ check needed with multiprocessing:
     4 # https://github.com/robotframework/robotframework/issues/1137
     5 if 'robot' not in sys.modules and __name__ == '__main__':
     6     import pythonpathsetter
     7 
     8 from robot import run_cli
     9 
    10 
    11 run_cli(sys.argv[1:])
    STEP 1.
    if 'robot' not in sys.modules and __name__ == '__main__':

    [explain]: 如果robot module包含在sys.modules 中则import pythonpathsetter 模块
     
    STEP 2.
    import pythonpathsetter
    [explain]: 这个模块的朱啊哟作用是保证用户在引用时以module的形式进行引用,
    不能直接引用内部脚本

     pythonpathsetter.py
     1 import sys
     2 import fnmatch
     3 from os.path import abspath, dirname
     4 
     5 ROBOTDIR = dirname(abspath(__file__))
     6 
     7 def add_path(path, end=False):
     8     if not end:
     9         remove_path(path)
    10         sys.path.insert(0, path)
    11     elif not any(fnmatch.fnmatch(p, path) for p in sys.path):
    12         sys.path.append(path)
    13 
    14 def remove_path(path):
    15     sys.path = [p for p in sys.path if not fnmatch.fnmatch(p, path)]
    16 
    17 
    18 # When, for example, robot/run.py is executed as a script, the directory
    19 # containing the robot module is not added to sys.path automatically but
    20 # the robot directory itself is. Former is added to allow importing
    21 # the module and the latter removed to prevent accidentally importing
    22 # internal modules directly.
    23 add_path(dirname(ROBOTDIR)) #或者去pythonpathsetter.py的上级目录, 加到sys.path中, 供导入模块使用
    24 remove_path(ROBOTDIR)  #从sys.path 中删除掉pythonpathsetter.py文件所在的目录, 防止内部脚本被直接应用

    [ps]:

    abspath 返回文件所在的绝对路径

    dirname 返回上一级路径

    abspath("monitor.log")
    'E:\Software\Software\Python2.7.11\Lib\site-packages\robot\monitor.log'
    ap = abspath("monitor.log")
    dp = dirname(ap)
    dp
    'E:\Software\Software\Python2.7.11\Lib\site-packages\robot'
    STEP 3.
     from robot import run_cli
    
     run_cli(sys.argv[1:])
    从模块中导入run_cli函数供采集运行module时传入的参数

    E:SoftwareSoftwarePython2.7.11Libsite-packages
    obot>python -m robot --help
    *** cli_arguments *** ['--help']
    Robot Framework -- A generic test automation framework
    
    Version:  3.0 (Python 2.7.11 on win32)
    
    Usage:  robot [options] data_sources
       or:  python -m robot [options] data_sources
       or:  python path/to/robot [options] data_sources
       or:  java -jar robotframework.jar [options] data_sources
    ,,, ,,, ,,, ,,,
    
    
    
     



  • 相关阅读:
    打jar包的命令
    WebServiceWSDLWeb
    linux命令之检测端口是否启用
    mybatis generator 插件安装及使用
    Mybatis 中一对多,多对一的配置
    大数据时代日志分析平台ELK的搭建
    关于RestfulAPI与SpringMVC之间的传值
    linux快速清空文件内容
    Linux之第一个shell命令
    Linux之yum
  • 原文地址:https://www.cnblogs.com/brownz/p/10195277.html
Copyright © 2020-2023  润新知