【Python】【自动化测试】【pytest】【常用命令行选项】
https://www.cnblogs.com/cnkemi/p/9989019.html
http://www.cnblogs.com/cnkemi/p/10002788.html
pytest 常用命令行选项(一)
pytest有丰富的命令行选项,以满足不同的需要,下面对常用的命令行选项作下简单介绍。 上文已经使用过-v选项,还有很多选项,你可以使用pytest --help查看全部选项。如下图:
1、--collect -only 选项
使用--collect -only选项可以展示在给定配置下哪些用例会被运行。让你方便地在测试运行之前,检查用例是否符合预期。如下例:
2、-k 选项
-k 选项允许你使用表达式指定希望运行的测试用例。假设希望选中test_asdict()和test_defaults(),那么可以用代表式"asdict or defaults"来筛选。结合-v或者--verbose查看是否符合预期,如下图:
3、-m 选项
标记(marker)用于标记测试并分组,以便快速选中并运行。以test_replace()和test_member_access()为例,它们甚至都不在同一个文件里,如果希望同时运行它们,那么可以预先做好标记。
这里使用什么标记名由你自己决定,比如使用run_these_case,则可以用@pytest.mark.run_these_case这样的装饰器(decorator)来标记,如下所示:
import pytest ...
@pytest.mark.run_these_case
def test_member_access():
...
给test_replace()也做上同样的标记。有相同标记的测试用例,可以一起运行。使用pytest -m run_these_case命令就可以同时运行test_replace()和test_member_access()。如下图:
使用-m选项还可以用表达式指定多个标记各。使用-m "mark1 and mark2"可以同时选中带有这两个标记的所有测试用例。使用-m "mark1 and not mark2"则会选中带有mark1的测试用例,而过滤带有mark2的测试用例;使用-m "mark1 or mark2"则选中带有mark1或者mark2的所有测试用例。
4、-x 选项
正常情况下,pytest会运行每一个搜索到的测试用例。如果某下测试函数被断言失败,或者触发了外部异常,则该测试用例的运行就会到此为止,pytest将其标记为失败后会继续运行下一个测试用例。通常,这是我们期望的运行模式。但如果希望在遇到失败时立即停止整个会话,这时-x选项就派上用场了。如用-x选项运行之前的6个测试用例,如下:
输出信息开头显示pytest收集到6个测试条目,末尾显示有1个通过,1个失败。如果没有-x选项,那么6个测试都会被执行,即使遇到测试失败,但没有停止后面的测试用例。如下图:
5、--maxfail==num选项
-x选项的特点是, 一旦遇到测试失败,就会全局停止。如果你希望pytest失败几次后再停止,则可以使用--maxfail选项,明确指定要以失败几次。 如设置--maxfail=2,则需要遇到两次错误才会停止,这样前面只存在一个失败测试的就会全都被执行。如下图:
So如设置--maxfail=1,在这里就与前面的-x作用相同。
6、--lf(--last-failed)选项 当一个或者多个测试失败时,我们常常希望能够定位到最后一个失败的测试用例重新运行,这时可以使用--lf选项。如下图:
7、--ff(--failed-first)选项 此选项与上面的--lf(--last-failed)选项的作用基本相同,不同之处在于--ff会运行完剩余的测试用例。如下图:
由于test_failing()是在test_two.py文件中,因此通常会在test_one.py之后运行,但是在--ff选项作用下,test_failing()前一轮被认定为失败,会被首先执行。
8、-v(--verbose) 选项
使用-v/--verbose选项,输出的信息会更详细。最明显的区别就是每个文件中的每个测试用例都占一行,测试的名字和结果都会显示出来,而不仅仅是一个点或字符。如下图:
在彩色显示器上可以看到FAILED标记为红色,PASSED标记为绿色。
9、-q(--quiet)选项
该选项的作用与-v/--verbose的相反,它会简化输出信息。如下图:
使用-q选项会简化输出信息,只保留最核心的内容。
10、--tb=style 选项
--tb=style选项决定捕捉到失败时输出信息的显示方式。某个测试用例失败后,pytest会列举出失败信息,包括失败出现在哪一行、是什么失败、怎么失败的,此过程我们称之为“信息回溯”。大多数情况下,信息回溯是有必要的,它对找到问题很有帮助,但有时也会对多余的信息感到厌烦,这时--tb=style选项就有用武之地了。常用的style类型有short、line、no。short模式仅输出assert的一行以及系统判定内容(不显示上下文);line模式只使用一行输出显示所有的错误信息;no模式则直接屏蔽全部回溯信息。
使用--tb=no屏蔽全部回溯信息。如下图:
使用--tb=line,它可以告诉错误的位置,如下图:
使用--tb=short,显示的回溯信息比前面两种模式的更详细。如下图:
除此之外,还有--tb=long输出最为详尽的回溯信息;--tb=auto是默认值,如果有多个测试用例失败,仅打印第一个和最后一个用例的回溯信息(格式与long模式一致);--tb=native只输出Python标准库的回溯信息,不显示额外信息。
11、--version 选项
使用--version可以显示当前的pytest版本及当前目录。如下图:
由于是用python pip命令安装的,所以会显示对就的site-packages目录。
12、-h(--help)选项
即使你已经熟练使用pytest,-h选项依然非常有用,它不但能展示原生的pytest的用法,还能展示新添加的插件的选项和用法。
使用-h选项可以获得:
. 基本用法:pytest [options] [file_or_dir] [file_or_dir] [...]
. 命令行选项及其用法,包括新添加的插件的选项及其用法。
. 可用于ini配置文件中的选项。
. 影响pytest行为的环境变量。
. 使用pytest --markers时的可用marker列表。
. 使用pytest --fixtures时的可用fixture列表。
帮助信息最后会显示一句话:
shown according to specified file_or_dir or current dir if not specified
这句话的意思为:显示结果取决于指定的文件或目录,未指定的则默认使用当前目录和文件。这句话非常重要,选项、marker、fixture都会因为目录的变化而发生变化。
【Python】【自动化测试】【pytest】【常用命令行选项】的更多相关文章
- python 解析命令行选项
问题: 程序如何能够解析命令行选项 解决方案 argparse 模块可被用来解析命令行选项 argparse 模块 argparse 模块是标准库中最大的模块之一,拥有大量的配置选项 dest 参数指 ...
- pytest 常用命令行选项(二)
本文接上篇继续简介pytest常用的命令行选项. 8.-v(--verbose) 选项 使用-v/--verbose选项,输出的信息会更详细.最明显的区别就是每个文件中的每个测试用例都占一行,测试的名 ...
- pytest 常用命令行选项(一)
pytest有丰富的命令行选项,以满足不同的需要,下面对常用的命令行选项作下简单介绍. 上文已经使用过-v选项,还有很多选项,你可以使用pytest --help查看全部选项.如下图: 1.--co ...
- Python 处理脚本的命令行参数(二):使用click
安装click pip install click 使用步骤 使用@click.command() 装饰一个函数,使之成为命令行接口 使用@click.option() 等装饰函数,为其添加命令行选项 ...
- Maven学习(四)Maven 命令行选项
说明: 1.使用-选项时,和后面的参数之间可以不要空格.而使用--选项时,和后面的参数之 间必须有空格.如下面的例子: $ mvn help:describe -Dcmd=compiler:co ...
- 学习笔记——Maven 命令行选项
2014-10-09:更新裁剪反应堆具体用法 说明: 1.使用-选项时,和后面的参数之间可以不要空格.而使用--选项时,和后面的参数之 间必须有空格.如下面的例子: $ mvn help:des ...
- 7z常用命令行&7z检测压缩包完整性&7z压缩包错误不执行rsync同步
7Z简介&常用命令 7Z脚本使用说明 7Z检测压缩包完整性脚本 7Z压缩包错误不执行Rsync脚本 1.7Z简介&常用命令 ⑴简介: 7z,全称7-Zip, 是一款开源软件.是目前公认 ...
- 关于pytest的命令行传参
#conftest.py import pytest def pytest_addoption(parser): #parser:用户命令行参数与ini文件值的解析器 # group = parser ...
- Linux 常用命令行
Linux常用命令行 第一部分: cd命令 第二部分:文件操作 第三部分:压缩包操作
随机推荐
- vue路由动态加载
注意:是动态加载不是动态路由 解决的问题: 动态配置菜单栏的路由参数--实现菜单级的权限控制 问题成因: 在vue实例化的时候vuex.vue-router 就需要加载完毕,无法使用异步的方式从服务器 ...
- Android 学习书籍下载
链接:https://pan.baidu.com/s/1Y6LHLJlYDfbNjoMAVjfjMw 密码:ywbk 链接:https://pan.baidu.com/s/ ...
- 【ArcGIS for Server】制作并发布GP服务--缓冲分析为例
https://www.cnblogs.com/d2ee/p/3641279.html https://www.jianshu.com/p/5331fa708fe5 https://www.cnblo ...
- 获取子字符串函数MidStr
MidStr返回指定范围内的字符串.该函数有三个参数.第一个参数为源字符串,第二个参数为起点(下标从1开始),第三个参数为结束点.通过第二.第三个参数则可指定要复制字符串的范围. function M ...
- Mock Server 入门(一)
Mock Server 使用场景 1.开发过程中依赖一些接口,而这些接口可能有一下情况: 1)接口搭建环境比较困难:例如支付宝的支付接口,需要授权等等准备好才能进行调试 2)接口暂时还未实现时:可以便 ...
- ajax中的同步与异步修改数据的问题
这次项目中因为前端有事儿,项目紧急加个新需求,于是自己硬着头皮上去看了下前端的逻辑后便开始动手了,但是为了简单起见就直接自己写了个ajax调服务来获取数据,然后修改前端定义的全局数据 //ajax来请 ...
- AutoBat
var currentDir = Directory.GetCurrentDirectory(); var filePath = string.Format("{0}\\Auto.bat&q ...
- 20190412 T-SQL语言二
Use xsxk;WITH c_count(id,xb,rs)AS (SELECT 班级,性别,count(*)FROM XS GROUP BY 班级,性别 ) SELECT * FROM c_cou ...
- 一个ping大包不通问题的解决过程
1.问题描述 存在问题: 深圳的采集机MQ程序无法与应用服务器进行通讯,表现为:获取小数据时正常,获取大数据时超时 场景图如下 2.数据下载测试 使用SCP工具和FTP工具进行数据下载测试,主要是想排 ...
- Oracle数据库分组排序
select row_number() over(partition by oea03 order by oea02 desc) num,oea01,oea02,oea03 from oea_file ...