在jenkins上运行自动化脚本时候,通常都是使用命令行方式来运行。而运行的测试套件、环境、失败重跑次数等参数都是灵活可配置,所以需要针对命令行制定运行的参数。本文记录python操作命令行参数。

几个概念

python test.py -x a —xx b —xxx=c d e f

  • 命令行参数 d e f
  • 命令行选项
    • 短选项模式 -x, 选项值a
    • 长选项模式 —xx, —xxx 选项值分别为b c

      通过sys.argv

      test.py
      1. import sys
      2. print(sys.argv)
      运行test.py
      1. $ python test.py a b c
      结果:[‘test.py’, ‘a’, ‘b’, ‘c’],获取到命令行参数列表,第一个参数(sys.argv[0])为脚本名

getopt

python还提供getopt来获取命令行参数

语法解析

  1. getopt.getopt(args, options[, long_options])
  2. eg:getopt.getopt(argv, "n:u:",["name=","url="])
  3. eg:getopt.getopt(argv, "-n:u",["name=","url="])

方法参数说明
args: 必填参数,要解析的参数列表,即sys.argv[1:]
options: 必填参数,短选项模式。以字符串格式定义。options后的【冒号:】表示必须有附加的参数值
long_options:非必填参数,长选项模式。以列表格式定义,long_options 后的【等号 = 】表示必须有参数值

返回值解析
options , args = getopt.getopt(sys.argv, “-a:-b:”, [“name=”]
共返回两个值,分别为命令行选项options ,和命令行参数args,均为列表格式

实际应用

test.py

  1. import sys
  2. import getopt
  3. argvs = sys.argv[1:]
  4. options, args = getopt.getopt(argvs, "-i:", "name=")
  5. print("options",options, "\n", "args", args)
  6. for key, value in options:
  7. if key == "-i":
  8. print("input", value)
  9. if key== "--name":
  10. print("name", value)

运行test.py 并查看结果

  1. $ python test.py -i test --name=tao arg1 arg2

image.png

optparse.OptionParse

https://www.cnblogs.com/captain_jack/archive/2011/01/11/1933366.html

argparse

https://blog.csdn.net/ronon77/article/details/84796144