pytestconfig--获取命令行参数及pytest.ini文件配置

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pytestconfig--获取命令行参数及pytest.ini文件配置相关的知识,希望对你有一定的参考价值。

参考技术A 来更新知识点了~

pytestconfig 是 pytest 一个内置的 fixture ,可以读取相关配置,这里主要介绍如何获取命令行参数以及 pytest.ini 中所写的配置项。

读取命令行参数还是比较有意义的,比如有多个 root_url ,可以通过读取参数来指定。其实在 pytest_addoption 这篇文章中已经介绍了如何注册命令行参数(甚至如何获取也有说明,只不过是用的 request.config ),这里就用 pytestconfig 来再次实现参数获取吧。

执行 pytest test_pytestconfig.py --value=pro 运行结果如下图:

首先在 pytest.ini 文件中,标记如下配置。

读取其实只需要用到 getini 方法。

运行上方已建立的 test_pytestconfig.py ,运行结果如下图,ini文件中的配置已成功输出。

最近关注博主的人儿就竟然快50了,是个非常大的鼓励了~这个月更新慢,重点确实不在这里,不过下个月会继续努力学习,努力做一个小知识点传送门的!

今天心情不错,祝大家也开心哦~

自我记录,有错误欢迎指正~

命令行参数及全局替换程序

知识内容:

1.python命令行参数

2.全局替换程序

 

 

 

一、python命令行参数

1.什么是命令行参数

简单说在命令行中给定的参数就是命令行参数,命令行的参数以空格隔开

eg:  编译C语言生成一个exe文件后用命令行来输入一些参数

./res.exe this is some parameter中的this is some parameter是字符串参数

 

2.python中的命令行参数

(1)python中的命令行参数

在Python里,命令行的参数和C语言很类似(因为标准Python是用C语言实现的)。在C语言里,main函数的原型为int main(int argc, char **argv),这里主要指linux平台, argc指的是命令行传入的参数个数(程序的name为第一个参数),而argv则是一个指针数组,每一个元素为指向一个命令行参数的指针。在Python里的命令行参数是存储在sys.argv里,argv是一个列表,第一个元素为程序名称

使用方法:  python name.py arg1 arg2 arg3

取命令行参数:  sys模块和getopt模块

 

(2)sys模块取命令行参数

Python 中也可以所用 syssys.argv 来获取命令行参数:

  • sys.argv 是命令行参数列表。

  • len(sys.argv) 是命令行参数个数。

实例:

1 import sys
2 
3 print("参数个数为: %d" % len(sys.argv))
4 print("参数列表为: %s" % str(sys.argv))

将以上代码保存为test.py在命令行中运行,得到的结果如下:

1 D:\wyb\python\oldboy>python3 test.py 1 2 3 4 5
2 参数个数为: 6
3 参数列表为: [test.py, 1, 2, 3, 4, 5]

 

(3)getopt模块取命令行参数

getopt模块是专门处理命令行参数的模块,用于获取命令行选项和参数,也就是sys.argv。命令行选项使得程序的参数更加灵活。支持短选项模式(-)和长选项模式(--),该模块提供了两个方法及一个异常处理来解析命令行参数

这里我主要介绍以下这种方法: getopt.getopt 方法

getopt.getopt 方法用于解析命令行参数列表,语法格式如下:

getopt.getopt(args, options[, long_options])

方法参数说明:

  • args: 要解析的命令行参数列表。

  • options: 以列表的格式定义,options后的冒号(:)表示该选项必须有附加的参数,不带冒号表示该选项不附加参数。

  • long_options: 以字符串的格式定义,long_options 后的等号(=)表示如果设置该选项,必须有附加的参数,否则就不附加参数。

  • 该方法返回值由两个元素组成: 第一个是 (option, value) 元组的列表。 第二个是参数列表,包含那些没有‘-‘或‘--‘的参数。

 官方解释:

 1 getopt(args, shortopts, longopts=[])
 2         getopt(args, options[, long_options]) -> opts, args
 3 
 4         Parses command line options and parameter list.  args is the
 5         argument list to be parsed, without the leading reference to the
 6         running program.  Typically, this means "sys.argv[1:]".  shortopts
 7         is the string of option letters that the script wants to
 8         recognize, with options that require an argument followed by a
 9         colon (i.e., the same format that Unix getopt() uses).  If
10         specified, longopts is a list of strings with the names of the
11         long options which should be supported.  The leading --
12         characters should not be included in the option name.  Options
13         which require an argument should be followed by an equal sign
14         (=).
15 
16         The return value consists of two elements: the first is a list of
17         (option, value) pairs; the second is the list of program arguments
18         left after the option list was stripped (this is a trailing slice
19         of the first argument).  Each option-and-value pair returned has
20         the option as its first element, prefixed with a hyphen (e.g.,
21         -x), and the option argument as its second element, or an empty
22         string if the option has no argument.  The options occur in the
23         list in the same order in which they were found, thus allowing
24         multiple occurrences.  Long and short options may be mixed.

 

实例: 

 1 import getopt
 2 import sys
 3 
 4 
 5 def usage():
 6     print(-h help \n-i --ip address\n-p --port number\n)
 7 
 8 
 9 if __name__ == __main__:
10     try:
11         options, args = getopt.getopt(sys.argv[1:], "hp:i:", [help, "ip=", "port="])
12         for name, value in options:
13             if name in (-h, --help):
14                 usage()
15             elif name in (-i, --ip):
16                 print(value)
17             elif name in (-p, --port):
18                 print(value)
19     except getopt.GetoptError:
20         usage()

在命令行中输入以下测试:

 1 D:\wyb\python\oldboy>python3 test.py -h
 2 -h help
 3 -i --ip address
 4 -p --port number
 5 
 6 D:\wyb\python\oldboy>python3 test.py -i 12.56.45.1 -p 90
 7 12.56.45.1
 8 90
 9 
10 D:\wyb\python\oldboy>python3 test.py --ip 12.56.45.1 --port 90
11 12.56.45.1
12 90

注:

sys.argv[1:]是引入命令行参数(文件名后的命令行参数)

定义命令行参数时,要先定义带‘-‘选项的参数,再定义带‘--’的参数

 

 

 

二、全局替换程序

 

以上是关于pytestconfig--获取命令行参数及pytest.ini文件配置的主要内容,如果未能解决你的问题,请参考以下文章

pytest文档64-内置 pytestconfig 动态添加和获取 pytest.ini 配置参数

命令行参数及全局替换程序

pytest文档63-内置fixture之pytestconfig

运行Linux命令及获取帮助

Linux下的环境变量与命令行参数

curl命令行参数及使用