Pytest测试框架的基本使用和allure测试报告

一、测试用例的识别与运行

目录识别

通过pytest.ini配置文件配置

  • 如果未指定任何参数,则收集从testpaths(如已配置)或当前目录开始。另外,命令行参数可以在目录、文件名或节点ID的任何组合中使用。
  • 递归到目录,除非它们匹配norecursedirs,排除目录搜索

文件识别

  • 在这些目录中,搜索 test_*.py 或 *_test.py 文件

用例识别

  • Test*类包含的所有test_ * 的方法(测试类不能带有__init__方法)
  • 不在类中的所有test_*方法

pytest也可以执行unittest框架写的用例和方法

运行方式

  1. pycharm界面运行
    修改默认的测试运行方式
    Pytest测试框架的基本使用和allure测试报告_第1张图片
  2. 右键 文件/ 目录 运行
  3. 使用命令行方式运行

二、常用的命令行参数

-k 字符串表达式: 只运行与给定字符串表达式匹配的测试用例,示例:-k "add":匹配所有名称中包含add的用例('add or div' 'TestClass')
-m mark标签名:只运行被标记的测试用例
-s:显示标准输出
-v:显示详细报告
-q:显示简介报告
-x:用例失败时立即停止测试
--maxfail=n: 失败n次后停止运行测试
--lf(--last-failed): 仅执行上次失败的用例(有失败的用例或者没找到缓存文件,默认是运行所有的用例)
--lfnf=[all,none]:--if同时使用, =all 表示找不到用例或缓存文件时执行所有用例,
				   =none 表示找不到用例或者缓存文件时不执行测试用例。
				   示例:pytest --lf --lfnf=none
--ff(--failed-first): 先执行失败的用例,再执行其它用例
--nf(--new-first): 首先从新文件或新修改的用例开始运行测试
--sw(--stepwise): 在测试失败时退出,且下一次在测试失败的用例开始测试
--stepwise-skip :忽略第一个失败的测试,在第二次测试失败时退出
--keep-duplicates : 不断重复的测试
--durations=n :显示执行最慢的n条用例
-strict: 禁止使用未在配置文件(pytest.ini)注册的 mark 标记
-c file:file加载配置文件
--collect-only:只收集用例
--junitxml=./result.xml:生成执行结果文件
--setup-show:回溯fixture的执行过程
--cache-clear :运行前清除pytest缓存

更多的用法使用pytest —help查看帮助文档
usage: pytest [options] [file_or_dir] [file_or_dir] [...]

positional arguments:
  file_or_dir

通用:
  -k EXPRESSION        	只运行与给定子字符串表达式匹配的测试用例。表达式是一个 python 可计算表达式,
  						其中所有名称都与测试名称及其父类进行子字符串匹配。
  						例如:-k 'test_method or test_other'匹配所有名称包含'test _ method''test_other'的测试函数和类的测试方法,而-k 'not test_method'匹配那些
  						不包含的测试函数和类的测试方法。-k 'not test_method and not test_other'
  						匹配不包含'test_method''test_other'的测试函数和类的测试方法。
  						此外,关键字匹配的类和函数包含额外的名称在他们的额外关键字匹配集,
  						以及函数的名称直接分配给他们。匹配不区分大小写。
  -m MARKEXPR           只运行匹配给定标记的测试函数和类。
                        例如: -m 'mark1 and not mark2'.
  --markers             显示标记(内置的、插件的和每个项目的)。
  -x, --exitfirst       在第一个错误或测试失败时立即退出。
  --fixtures,--funcargs 显示可用的fixture,按插件外观排序(带'_'的fixture仅以“-v”显示)
  --fixtures-per-test   显示每个测试用例的fixture
  --pdb                 在出现错误或键盘中断时启动交互式Python调试器。
  --pdbcls=modulename:classname
                        在出现错误时启动自定义交互式Python调试器。
                        例如:--pdbcls=IPython.terminal.debugger:TerminalPdb
  --trace               运行每个测试时立即中断。
  --capture=method      每个用例捕获信息的方法: fd(文件描述符,默认)|sys(系统标准的错误输出)|no(显示打印信息)|tee-sys.
  -s                    等价于--capture=no,显示打印信息
  --runxfail            强制运行xfail标记的test
  --lf, --last-failed   只重新运行在上次运行中失败的测试(如果没有失败,则重新运行所有测试)
  --ff, --failed-first  运行所有的测试,但是先运行上一次运行失败的测试。
  						这可能会导致测试的重新排序,因此导致重复fixture中的setup/teardown。
  --nf, --new-first     先从新文件开始测试,然后剩下的测试按照文件时间排序。
  --cache-show=[CACHESHOW]
                        显示缓存内容,不执行收集或测试。可选参数:glob(默认值:“*”)。
  --cache-clear         在测试运行开始时删除所有缓存内容。
  --lfnf={
   all,none}, --last-failed-no-failures={
   all,none}
                        与--lf同时使用, =all 表示找不到用例或缓存文件时执行所有用例,
                        =none 表示找不到用例或者缓存文件时不执行测试用例。
				   		示例:pytest --lf --lfnf=none
  --sw, --stepwise      在测试失败时退出,且下一次在测试失败的用例开始测试。
  --sw-skip, --stepwise-skip
                        忽略第一个失败的测试,但在下一个失败的测试中停止
  --allure-severities=SEVERITIES_SET
                        以逗号分隔的严重性名称列表。
                       	将只运行具有这些严重性的测试用例。
                        严重等级名称有: blocker, critical, normal, minor, trivial.
  --allure-epics=EPICS_SET
                        以逗号分隔的episc(史诗)名字列表。
                        运行至少具有一个指定epics标签的测试。
  --allure-features=FEATURES_SET
                        以逗号分隔的feature名称列表。
                       	运行至少具有一个指定feature标签的测试。
  --allure-stories=STORIES_SET
                        以逗号分隔的story名称列表。
                        运行至少具有一个指定story标签的测试。
  --allure-ids=IDS_SET  以逗号分隔的IDS列表。
                        运行至少具有一个指定ids标签的测试。
  --allure-link-pattern=LINK_TYPE:LINK_PATTERN
                        链接类型的Url模式。 在测试中允许短链接,比如'issue-1'。
                        文本将通过str.format()被格式化为完整的网址。



报告:
  --durations=N         显示N个最慢的用例,每个用例运行的时间 (N=0 显示每个用例运行的时间).
  --durations-min=N     包含在最慢列表中的最小持续时间(以秒为单位)。默认值为0.005s
  -v, --verbose         输出详细信息
  --no-header           禁用(不显示)标题
  --no-summary          禁用(不显示)摘要
  -q, --quiet           输出简要信息
  --verbosity=VERBOSE   设置信息显示等级. 默认是0.
  -r chars              显示由chars指定的额外测试摘要信息: (f)ailed, (E)rror, (s)kipped, (x)failed,
                        (X)passed, (p)assed, (P)assed with output, (a)ll except passed (p/P), or (A)ll. (w)arnings are
                        enabled by default (see --disable-warnings), 'N' can be used to reset the list. (default: 'fE').
  --disable-warnings, --disable-pytest-warnings
                        禁用警告摘要
  -l, --showlocals     在 tracebacks 中显示局部变量,默认不显示
  --tb=style            traceback 打印模式 (auto/long/short/line/native/no).
  --show-capture={
   no,stdout,stderr,log,all}
                        控制在失败的测试中如何显示捕获错误信息,捕获方式有:stdout/stderr/log。默认值为“all”。
  --full-trace          不截取 traceback,默认会截断
  --color=color         彩色终端输出(yes/no/auto).
  --code-highlight={
   yes,no}
                        是否应突出显示代码 (仅当 --color 被启用时有作用)
  --pastebin=mode       发送 failed

你可能感兴趣的:(测试开发,python)