pytest132个命令行参数用法
在Shell执行pytest -h可以看到pytest的命令行参数有这10大类,共132个
| 序号 |
类别 | 中文名 | 包含命令行参数数量 |
|---|---|---|---|
| 1 | positional arguments | 形参 | 1 |
| 2 | general | 通用 | 31 |
| 3 | reporting | 报告 | 18 |
| 4 | collection | 收集 | 15 |
| 5 | test session debugging and configuration | 测试session调试和配置 | 11 |
| 6 | pytest-warnings | pytest警告 | 1 |
| 7 | logging | 日志 | 11 |
| 8 | reporting-allure | allure测试报告 | 3 |
| 9 | ini-options | pytest.ini/tox.ini/setup.cfg 配置文件 |
37 |
| 10 | environment variables | 环境变量 | 4 |
1.positional arguments
file_or_dir
指定一个或多个文件/目录
pytest [file_or_dir] [file_or_dir] [...]
2.general
-k EXPRESSION
名字包含test_method或test_other的函数或类
-k "test_method or test_other"
名字不包含test_method
-k "not test_method"
名字不包含test_method不包含test_other
-k 'not test_method and not test_other'
大小写敏感。
源码这里不是很明白,先放这,以后再补充解释吧
@classmethod
def from_item(cls, item: "Item") -> "KeywordMatcher":
mapped_names = set()
# Add the names of the current item and any parent items.
import pytest
for node in item.listchain():
if not isinstance(node, (pytest.Instance, pytest.Session)):
mapped_names.add(node.name)
# Add the names added as extra keywords to current or parent items.
mapped_names.update(item.listextrakeywords())
# Add the names attached to the current function through direct assignment.
function_obj = getattr(item, "function", None)
if function_obj:
mapped_names.update(function_obj.__dict__)
# Add the markers to the keywords as we no longer handle them correctly.
mapped_names.update(mark.name for mark in item.iter_markers())
return cls(mapped_names)
-m MARKEXPR
包含mark1,不包含mark2
-m 'mark1 and not mark2'
--markers
显示markers
pytest --markers
-x, --exitfirst
第一个error或failed的test就退出,2个参数等价
pytest -x
pytest --exitfirst
--maxfail=num
2个errors或failures就退出
pytest --maxfail=2
--strict-config
解析配置文件中pytest部分时,遇到warning就抛出error
pytest --strict-config
-c file
从my.ini文件加载配置
pytest -c my.ini
--continue-on-collection-errors
收集test失败,仍然强制继续执行
pytest --continue-on-collection-errors
--rootdir=ROOTDIR
tests根目录,相对路径
pytest --rootdir="root_dir"
pytest --rootdir="./root_dir"
pytest --rootdir="root_dir/another_dir/"
绝对路径
pytest --rootdir="/home/user/root_dir"
带变量
pytest --rootdir="$HOME/root_dir"
--fixtures, --funcargs
显示fixtures,以下等价
pytest --fixtures
pytest --funcargs
显示以_开头的fixture
pytest --fixtures -v
--fixtures-per-test
显示每个test用到的fixture
pytest --fixtures-per-test
--pdb
在errors或KeyboardInterrupt时,启用默认Python debugger
pytest --pdb
--pdbcls=modulename:classname
启用自定义Python debugger,由IPython.terminal.debugger module下的TerminalPdb class定义
pytest --pdbcls=IPython.terminal.debugger:TerminalPdb
--trace
run每个test时break,进入debugger交互
pytest --trace
--capture=method
文件描述符(默认)
pytest --capture=fd
stdout/stderr 内存
pytest --capture=sys
显示print
pytest --capture=no
tee-sys
pytest --capture=tee-sys
-s
等价于--capture=no
--runxfail
强制运行xfail标记的test
pytest --runxfail
--lf, --last-failed
重跑上次失败的tests,如果没有失败就重跑全部,以下等价
pytest -lf
pytest --last-failed
--ff, --failed-first
优先跑上次失败的test,tests的顺序会被打乱,以下等价
pytest -ff
pytest --failed-first
--nf, --new-first
优先跑新添加的tests,剩余的按文件mtime顺序,以下等价
pytest --nf
pytest --new-first
--cache-show=[CACHESHOW]
显示缓存,默认*
pytest --cache-show
显示缓存,带参数cache\nodeids
pytest --cache-show=cache\nodeids
--cache-clear
运行开始时清缓存
pytest --cache-clear
--lfnf={all,none}, --last-failed-no-failures={all,none}
没有last-failed缓存数据,或上次没有失败时,
跑全部tests
pytest --lfnf=all
pytest --last-failed-no-failures=all
不运行
pytest --lfnf=none
pytest --last-failed-no-failures=none
--sw, --stepwise
逐步运行,在失败时退出,下次运行时从失败的用例开始
pytest -sw
pytest --stepwise
--stepwise-skip
跳过第一个失败的test,如果再遇到失败就退出
pytest --stepwise-skip
--allure-severities=SEVERITIES_SET
指定allure severities运行
pytest --allure-severities=blocker, critical, normal, minor, trivial
--allure-epics=EPICS_SET
指定allure epics运行
pytest --allure-epics=my_epic
--allure-features=FEATURES_SET
指定allure features运行
pytest --allure-features=my_feature
--allure-stories=STORIES_SET
指定allure stories运行
pytest --allure-stories=my_story
--allure-link-pattern=LINK_TYPE:LINK_PATTERN
不知道怎么用,溜了溜了
pytest --allure-link-pattern=
3.reporting
--durations=N
显示2个最慢的setup/test的耗时
pytest --durations=2
显示所有耗时
pytest --durations=0
-v, --verbose
输出详细信息
pytest -v
pytest --verbose
-q, --quiet
输出简要信息
pytest -q
pytest --quiet
--verbosity=VERBOSE
设置信息显示等级为2
pytest --verbosity=2
-r chars
默认"fE"
显示failed的信息
pytest -r f
显示Error的信息
pytest -r E
显示skipped的信息
pytest -r s
显示xfailed的信息
pytest -r x
显示Xpassed的信息
pytest -r X
显示passed的信息
pytest -r p
显示Passed with output的信息
pytest -r P
显示all except passed的信息
pytest -r a
pytest -r A
显示warnings are enabled by default (--disable-warnings)的信息
pytest -r w
重置list
pytest -r N
-l, --showlocals
在tracebacks中显示局部变量,默认不显示
pytest -l
pytest --showlocals
--tb=style
traceback打印模式
pytest --tb=auto
pytest --tb=long
pytest --tb=short
pytest --tb=line
pytest --tb=native
pytest --tb=no
--show-capture
失败的tests如何显示,默认"all"
pytest --show-capture=no
pytest --show-capture=stdout
pytest --show-capture=stderr
pytest --show-capture=log
pytest --show-capture=all
--full-trace
不截取traceback,默认会截断
pytest --full-trace
--color=color
显示颜色
pytest --color=yes
不显示颜色
pytest --color=no
自动
pytest --color=auto
--pastebin=mode
没什么用
pytest --pastebin=mode
--junit-xml=path
创建junit-xml风格的测试报告
pytest --junit-xml=path
--junit-prefix=str
junit-xml输出中的classnames添加前缀hello
pytest --junit-prefix="hello"
--result-log=path
不建议使用
pytest --result-log=path
4.collection
--collect-only, --co
只收集,不执行。可以用来统计写了多少条自动化用例
pytest --collect-only
pytest --co
--pyargs
把所有参数解释为python包(package)
pytest --pyargs
--ignore=path
忽略不收集,可以多个(逗号隔开)
pytest --ignore=path1,path2,path3
--ignore-glob=path
path匹配,可以多个(逗号隔开)
pytest --ignore-glob="*_01.py"
--deselect=nodeid_prefix
通过node id prefix反选。可以多个(逗号隔开)
取消选择tests/foobar/test_foobar_01.py::test_a
--deselect="tests/foobar/test_foobar_01.py::test_a"
--confcutdir=dir
只加载相对于tests/foobar/目录的conftest.py文件
pytest --confcutdir="tests/foobar/"
--noconftest
不加载conftest.py文件
pytest --noconftest
--keep-duplicates
收集重复的test文件,默认只会收集1item,加参数后会收集2items
pytest test.py test.py --keep-duplicates
--collect-in-virtualenv
收集本地虚拟环境目录的tests
pytest --collect-in-virtualenv
--doctest-modules
doctest没啥用
pytest --doctest-modules
--doctest-report={none,cdiff,ndiff,udiff,only_first_failure}
doctest没啥用
pytest --doctest-report={none,cdiff,ndiff,udiff,only_first_failure}
--doctest-glob=pat
doctest没啥用
pytest --doctest-glob=pat
--doctest-ignore-import-errors
doctest没啥用
pytest --doctest-ignore-import-errors
--doctest-continue-on-failure
doctest没啥用
pytest --doctest-continue-on-failure
5.test session debugging and configuration
--basetemp=dir
test run的base临时目录(如果存在会先删除)
pytest --basetemp=dir
-V, --version
pytest版本
pytest -V
pytest --version
-h, --help
pytest帮助
pytest -h
pytest --help
-p name
加载plugin module或 entry point
pytest -p name
不加载doctest
pytest -p no:doctest
--trace-config
查看本地安装好的第三方插件
pytest --trace-config
--debug
保存debug信息到'pytestdebug.log'文件
pytest --debug
-o OVERRIDE_INI, --override-ini=OVERRIDE_INI
覆盖ini文件配置
pytest -o xfail_strict=True -o cache_dir=cache
pytest --override-ini=OVERRIDE_INI
--assert=MODE
默认rewrite
pytest --assert=rewrite
无assertion debugging
pytest --assert=plain
--setup-only
只setup fixtures,不执行tests
pytest --setup-only
--setup-show
执行tests的时候显示fixture setup
pytest --setup-show
--setup-plan
显示fixtures和tests计划会执行什么,但是不执行
也可以用来统计自动化用例
pytest --setup-plan
6.pytest-warnings
-W PYTHONWARNINGS, --pythonwarnings=PYTHONWARNINGS
设置报告哪些warnings
pytest -W PYTHONWARNINGS
pytest --pythonwarnings=PYTHONWARNINGS
7.logging
推荐直接使用loguru第三方库。
--log-level=LEVEL
默认没有设置,依赖log handler
WARNING DEBUG INFO ERROR
pytest --log-level=LEVEL
--log-format=LOG_FORMAT
日志格式
pytest --log-format="%(asctime)s %(levelname)s %(message)s"
--log-date-format=LOG_DATE_FORMAT
日期格式
pytest --log-date-format="%Y-%m-%d %H:%M:%S"
--log-cli-level=LOG_CLI_LEVEL
cli日志级别
pytest --log-cli-level=LOG_CLI_LEVEL
--log-cli-format=LOG_CLI_FORMAT
cli日志格式
pytest --log-cli-format="%(asctime)s %(levelname)s %(message)s"
--log-cli-date-format=LOG_CLI_DATE_FORMAT
cli日志级别
pytest --log-cli-date-format="%Y-%m-%d %H:%M:%S"
--log-file=LOG_FILE
日志文件路径
pytest --log-file=LOG_FILE
--log-file-level=LOG_FILE_LEVEL
日志文件级别
pytest --log-file-level=LOG_FILE_LEVEL
--log-file-format=LOG_FILE_FORMAT
日志文件格式
pytest --log-file-format="%(asctime)s %(levelname)s %(message)s"
--log-file-date-format=LOG_FILE_DATE_FORMAT
日志文件日期
pytest --log-file-date-format="%Y-%m-%d %H:%M:%S"
--log-auto-indent=LOG_AUTO_INDENT
自动换行
true|flase on|off
pytest --log-auto-indent=LOG_AUTO_INDENT
8.reporting-allure
--alluredir=DIR
allure数据生成目录,注意不是html哦,而是json文件,需要allure generate data_dir -o html_dir才能生成html
pytest --alluredir=DIR
--clean-alluredir
如果存在alluredir,先清除
pytest --clean-alluredir
--allure-no-capture
报告不捕获pytest的logging/stdout/stderr信息
pytest --allure-no-capture
9.ini-options
ini文件用例设置一些初始化默认值。
部分内容其实质跟参数是一样用法。
markers (linelist)
自定义marker
# pytest.ini
[pytest]
markers =
webtest: Run the webtest case
hello: Run the hello case
empty_parameter_set_mark (string)
默认情况下,如果@pytest.mark.parametrize的argnames中的参数没有接收到任何的实参的话,用例的结果将会被置为SKIPPED;empty_parameter_set_mark可以设置为skip、xfail、fail_at_collect。
norecursedirs (args)
忽略一些目录
# pytest.ini
[pytest]
norecursedirs = .* build dist CVS _darcs {arch} *.egg venv src
testpaths (args)
指定目录
# pytest.ini
[pytest]
testpaths = test_path
usefixtures (args)
默认使用fixtures。
python_files (args)
glob文件匹配模式的python test modules。
python_classes (args)
前缀/glob文件匹配模式的python test classes。
python_functions (args)
前缀/glob文件匹配模式的python test functions。
ty_support (bool)
有风险,没用。
console_output_style (string)
控制台输出样式
- classic 经典样式
- progress: 带进度百分比
- count 计数而不是百分比
xfail_strict (bool)
默认false,true时@pytest.mark.xfail的test,会被强制失败,即使是成功的。
enable_assertion_pass_hook (bool)
确保删除之前生成的pyc缓存文件。
junit_suite_name (string)
不用学。
junit_logging (string)
不用学。
junit_log_passing_tests (bool)
不用学。
junit_duration_report (string)
不用学。
junit_family (string)
不用学。
doctest_optionflags (args)
不用学。
doctest_encoding (string)
不用学。
cache_dir (string)
缓存目录。
filterwarnings (linelist)
同 -W/--pythonwarnings。
log_level (string)
同命令行参数。
log_format (string)
同命令行参数。
log_date_format (string)
同命令行参数。
log_cli (bool)
true,test run的时候,实时显示日志。
log_cli_level (string)
同命令行参数。
log_cli_format (string)
同命令行参数。
log_cli_date_format (string)
同命令行参数。
log_file (string)
同命令行参数。
log_file_level (string)
同命令行参数。
log_file_format (string)
同命令行参数。
log_file_date_format (string)
同命令行参数。
log_auto_indent (string)
同命令行参数。
faulthandler_timeout (string)
如果test的运行时间超过设定的时间(超时),会打印相关traceback。
addopts (args)
执行时带的默认参数,可以避免每次都要输入一遍
addopts = -rsxX -v --reruns=1 --count=2
minversion (string)
pytest最小版本号。如果pytest低于这个版本,运行会报错。
required_plugins (args)
必须的插件。
10.environment variables
PYTEST_ADDOPTS
命令行选项
export PYTEST_ADDOPTS=
PYTEST_PLUGINS
包含应作为插件加载的以逗号分隔的模块列表
export PYTEST_PLUGINS=mymodule.plugin,xdist
PYTEST_DISABLE_PLUGIN_AUTOLOAD
禁用插件自动加载
export PYTEST_DISABLE_PLUGIN_AUTOLOAD=
PYTEST_DEBUG
启用pytest调试
export PYTEST_DEBUG=
版权申明:本文为博主原创文章,转载请保留原文链接及作者。
如果您喜欢我写的文章,请关注公众号支持一下,谢谢哈哈哈。

pytest132个命令行参数用法的更多相关文章
- pytest封神之路第二步 132个命令行参数用法
在Shell执行pytest -h可以看到pytest的命令行参数有这10大类,共132个 序号 类别 中文名 包含命令行参数数量 1 positional arguments 形参 1 2 gene ...
- Python测试框架pytest命令行参数用法
在Shell执行pytest -h可以看到pytest的命令行参数有这10大类,共132个 序号 类别 中文名 包含命令行参数数量 1 positional arguments 形参 1 2 gene ...
- $命令行参数解析模块argparse的用法
argparse是python内置的命令行参数解析模块,可以用来为程序配置功能丰富的命令行参数,方便使用,本文总结一下其基本用法. 测试脚本 把以下脚本存在argtest.py文件中: # codin ...
- linux 中解析命令行参数(getopt_long用法)
linux 中解析命令行参数(getopt_long用法) http://www.educity.cn/linux/518242.html 详细解析命令行的getopt_long()函数 http:/ ...
- python命令行参数解析OptionParser类用法实例
python命令行参数解析OptionParser类用法实例 本文实例讲述了python命令行参数解析OptionParser类的用法,分享给大家供大家参考. 具体代码如下: from opt ...
- 你可能不知道的Google Chrome命令行参数
概述: 关于Google Chrome命令行参数(英文叫Google Chrome Command line switches),是Chrome为了实现实验性功能.方便调试. ...
- getopt函数的使用——分析命令行参数
getopt(分析命令行参数) getopt(分析命令行参数) 短参数的定义 返回值 范例 getopt_long 相关函数表头文件#include<unistd.h> 函数声明int g ...
- mysql命令行参数(转)
MySQL命令行参数 Usage: mysql [OPTIONS] [database] //命令方式 -?, --help //显示帮助信息并退出 -I, --help //显示帮助信息并退出 ...
- mysql 命令行参数
MySQL命令行参数 Usage: mysql [OPTIONS] [database] //命令方式 例如: mysql -h${HOSTNAME} -P${PORT} -u${USERNAM ...
随机推荐
- [机器学习] keras:MNIST手写数字体识别(DeepLearning 的 HelloWord程序)
深度学习界的Hello Word程序:MNIST手写数字体识别 learn from(仍然是李宏毅老师<机器学习>课程):http://speech.ee.ntu.edu.tw/~tlka ...
- nginx进程模型解析
nginx进程模型解析 概念 master会发送请求给worker,用于处理用户的请求,模型图如下 nginx进程分类 master进程(只有1个) 接受信号传递给worker wo ...
- C++实现哈夫曼编码/译码器(数据结构)
设计一个哈夫曼编码.译码系统.对一个ASCII编码的文本文件中的字符进行哈夫曼编码,生成编码文件:反过来,可将编码文件译码还原为一个文本文件.(1) 从文件中读入任意一篇英文短文(文件为ASCII编码 ...
- 为什么你的 64-bit 程序可能占用巨大的虚拟空间
出于很多目的,我从最新的 Go 系统内核开发源码复制了一份代码,在一个正常的运行环境中构建(和重新构建)它,在构建版本基础上周期性地重新构建 Go 程序.近期我在用 ps 查看我的一个程序的内存使用情 ...
- CSS动画基础知识
CSS动画就是通过CSS (Cascading Style Sheet,层叠样式表)代码搭建的网页动画.它允许设计师和开发人员通过编辑网站的CSS代码来添加页面动画,从而轻松取代传统动画图片或flas ...
- 【算法•日更•第三十七期】A*寻路算法
▎写在前面 这是一种搜索算法,小编以前总是念成A乘寻路算法,没想到一直念错. 请大家都念成A星寻路算法,不要像小编一样丢人了. ▎A*寻路算法 ☞『引入』 相信大家都或多或少的玩过一些游戏吧,那么游戏 ...
- Linux C++向josn文件写入字符串
对C++了解的不多,我的需求是往JSON文件里写入字符串,这种方式不需要用开源的库,直接写文件就可以.附上代码需要包含studio.h头文件以计fstream long a=123456; char ...
- java+opencv人脸识别程序2.0
由于第一次写的太粗糙了,所以又修改了一下,详细的更改如下: @ 目录 更改 窗口问题 识别问题 相似度对比 仍然存在的问题 人脸信息显示 图片质量 更改 优化了一下界面风格 窗口问题 原来是在主界面外 ...
- eclipse git如何切换分支,拉取代码,合并代码,解决冲突等
(如果想看eclipse拉取git项目,移步到我上一篇文章)以下步骤是eclipse运用git的切换分支,拉取合并代码的基本操作: 1.切换远程分支:鼠标右键项目--team--switch to - ...
- python 判断文件和文件夹是否存在、创建文件夹
原文链接:https://www.cnblogs.com/hushaojun/p/4533241.html >>> import os >>> os.path.ex ...