zoukankan      html  css  js  c++  java
  • pytes 132个命令行参数用法

     

    在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 odeids

    pytest --cache-show=cache
    odeids
    

    [--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.parametrizeargnames中的参数没有接收到任何的实参的话,用例的结果将会被置为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=
    努力努力努力
  • 相关阅读:
    转傻逼是傻逼的通行证,苦逼是苦逼的墓志铭 简单
    css 表格底边框在ie6下不显示 简单
    cookie设置、读取,domain、path、expires 简单
    js事件作用域问题 简单
    js鼠标事件定位 简单
    报到证的作用 简单
    转白领一族预防空调病全攻略 简单
    The "External World" is Inside the Brain
    [转]DllMain详解
    Drill Into .NET Framework Internals to See How the CLR Creates Runtime Objects
  • 原文地址:https://www.cnblogs.com/wwtest/p/13993723.html
Copyright © 2011-2022 走看看