请问有哪些Pytest命令行选项参数对个人使用特别有帮助?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1633个文字,预计阅读时间需要7分钟。
使用`--collect-only`选项可以展示在指定配置下哪些测试用例会被运行。此选项允许你在测试运行之前,方便地检查选中的测试用例是否符合预期。`pytest`
一、--collect-only选项
使用--collect-only选项可以展示在给定的配置下哪些测试用例会被运行
--collect-only选项可以让你非常方便的在测试运行之前,检查选中的测试用例是否符合预期
pytest --collect-only或者
pytest --co
二、-k选项
-k选项允许你使用表达式指定希望运行的测试用例,
这个功能非常实用,如果测试名是唯一的,或者多个测试方法名/测试文件名的前缀或者后缀相同,那么则可以使用表达式快速定位
假设希望选中test_judge_user_login_or_not.py和test_get_banner_HomePage两个测试文件中的用例:
pytest -k "user or banner" --collect-only当然也可以运行所有的测试,根据用例名称筛选排除掉某些用例:pytest -k "not user" --collect-only
三、-m选项
标记(marker)用于标记测试并分组,以便快速选中并运行用例。
只能运行有相应标识的测试用例,使用这个参数,测试用例要使用@pytest.mark.修饰。】
pytest –m如下实例:为slow
# content of test.pyimport pytest
class TestClass(object):
def test_one(self):
'''new_etests'''
x = "this"
assert 'h' in x
@pytest.mark.slow
def test_two(self): # teste_two使用了@pytest.mark.slow来修饰
'''new_sssetests'''
x = "hello"
assert hasattr(x, 'check')
def test_a(self):
assert 1==2
结果如下:
从上图中可以看出,只运行了一个我们带有标识的用例。
注意,-m后面不能带''号(单引号),只能带""(双引号),不然识别不到
如果要运行多个标识的话,用表达式,如下:
pytest -m "slow or faster" 运行有slow标识或 faster标识用例pytest -m "slow and faster" 运行有slow和faster标识的用例
pytest -m "slow and not faster" 运行有slow和没有faster标识的用例
四、-x选项
正常情况下,pytest会运行每一个搜索到的用例。如果某个测试函数被断言失败,或者触发了外部异常,则该测试用例的运行就会到此而止,pytest将其标记为失败后会继续运行下一条用例,这也是我们通常期望的运行模式。
但是在debug的时候我们会希望遇到失败时停止整个会话,这时就可以使用到-x命令行运行方式了。
pytest -x五、--maxfail=num选项
-x选项的特点是,一旦遇到运行失败,整个测试就会全局停止。
假设你允许几次失败后才会停止,那么--maxfail选项就可以派上用场了(明确可以失败num次)
如果pytest命令行运行时选项设置为--maxfail=1则与-x的作用相同
pytest --maxfail=num六、-s选项
-s选项允许终端在测试运行时输出某些结果,包括任何符合标准的输出流信息
正常情况下,所有的测试输出都会被捕获。因为在编写测试用例时,习惯添加几个print(),以便于观察某时候测试执行到了哪个阶段。
pytest -s七、--lf或者--last-failed选项
当一个或多个测试用例运行失败时,我们常常希望能够定位失败的测试用例并且重新运行,这是--lf或者--last-failed就可以派上用场了。
即重跑上次失败的所有测试用例,如果没有失败就重跑全部。
pytest --last-failed或者
pytest --lf
如下方只运行上一次运行失败的测试用例,测试通过的未被选中
八、--ff或者--failed-first选项
--ff(--failed-first)选项与--last-failed选项的作用基本相同。
pytest命令行运行--ff(--failed-first)时,会首先运行上一次失败的测试用例,然后才会运行剩下被选中的所有的测试用例。
pytest --ff或者
pytest --failed-first
九、-v(--verbose)选项
使用-v/--verbose选项,输出的信息会更详细。最明显的区别就是每个文件中的每个测试用例都占一行(而简化输出或者默认输出的终端控制台显示为一个文件一行且测试用例的成功或失败是由./F/E等区分)。
使用-v/--verbose选项,测试的名字和结果都会显示出来,而不仅仅是一个点或字符。用例执行成功或者失败会在每行后显示PASSED/FAILED
pytest -v如下:每一个测试用例在终端控制台都会占一行
十、 -q(--quiet)选项
-q(--quiet)选项与-v(--verbose)的作用相反,-q的作用是简化输出信息。
-q(--quiet)选项不显示每个用例的详细信息,可以与--tb=line(进打印异常代码的位置)结合使用
pytest -q --tb=line例如:一个测试文件中有多个测试用例,有一个测试用例执行失败,则只会打印那一个失败的测试用例异常代码:
十一、--tb=style选项
信息回溯:某个测试用例执行失败后,pytest会列举出失败信息,包括失败出现在哪一行、是什么失败、怎么失败的、此过程我们称之为
--tb=style选项决定捕捉到失败时输出信息的显示方式。
使用--tb=no屏蔽全部回溯信息:
使用--tb=line,仅仅告诉我们错误的用例执行时发生错误的位置:
使用--tb=short,显示的回溯信息比前面两种模式的更详细:
使用--tb=long,输出最为详尽的回溯信息:
使用--tb=auto是默认值,如果有多个测试用例执行失败,进打印第一个和最后一个测试用例的回溯信息(格式与long模式的一致):
使用--tb=native只输出Python标准库的回溯信息,不显示额外信息:
十二、-r(chars)选项
-r选项不但可以帮助用户了解某些测试的原因,还可以用于查看其他测试结果。
显示 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 apytest -r A显示 warnings are enabled by default (--disable-warnings) 的信息
pytest -r w重置 list
pytest -r N 去期待陌生,去拥抱惊喜。
本文共计1633个文字,预计阅读时间需要7分钟。
使用`--collect-only`选项可以展示在指定配置下哪些测试用例会被运行。此选项允许你在测试运行之前,方便地检查选中的测试用例是否符合预期。`pytest`
一、--collect-only选项
使用--collect-only选项可以展示在给定的配置下哪些测试用例会被运行
--collect-only选项可以让你非常方便的在测试运行之前,检查选中的测试用例是否符合预期
pytest --collect-only或者
pytest --co
二、-k选项
-k选项允许你使用表达式指定希望运行的测试用例,
这个功能非常实用,如果测试名是唯一的,或者多个测试方法名/测试文件名的前缀或者后缀相同,那么则可以使用表达式快速定位
假设希望选中test_judge_user_login_or_not.py和test_get_banner_HomePage两个测试文件中的用例:
pytest -k "user or banner" --collect-only当然也可以运行所有的测试,根据用例名称筛选排除掉某些用例:pytest -k "not user" --collect-only
三、-m选项
标记(marker)用于标记测试并分组,以便快速选中并运行用例。
只能运行有相应标识的测试用例,使用这个参数,测试用例要使用@pytest.mark.修饰。】
pytest –m如下实例:为slow
# content of test.pyimport pytest
class TestClass(object):
def test_one(self):
'''new_etests'''
x = "this"
assert 'h' in x
@pytest.mark.slow
def test_two(self): # teste_two使用了@pytest.mark.slow来修饰
'''new_sssetests'''
x = "hello"
assert hasattr(x, 'check')
def test_a(self):
assert 1==2
结果如下:
从上图中可以看出,只运行了一个我们带有标识的用例。
注意,-m后面不能带''号(单引号),只能带""(双引号),不然识别不到
如果要运行多个标识的话,用表达式,如下:
pytest -m "slow or faster" 运行有slow标识或 faster标识用例pytest -m "slow and faster" 运行有slow和faster标识的用例
pytest -m "slow and not faster" 运行有slow和没有faster标识的用例
四、-x选项
正常情况下,pytest会运行每一个搜索到的用例。如果某个测试函数被断言失败,或者触发了外部异常,则该测试用例的运行就会到此而止,pytest将其标记为失败后会继续运行下一条用例,这也是我们通常期望的运行模式。
但是在debug的时候我们会希望遇到失败时停止整个会话,这时就可以使用到-x命令行运行方式了。
pytest -x五、--maxfail=num选项
-x选项的特点是,一旦遇到运行失败,整个测试就会全局停止。
假设你允许几次失败后才会停止,那么--maxfail选项就可以派上用场了(明确可以失败num次)
如果pytest命令行运行时选项设置为--maxfail=1则与-x的作用相同
pytest --maxfail=num六、-s选项
-s选项允许终端在测试运行时输出某些结果,包括任何符合标准的输出流信息
正常情况下,所有的测试输出都会被捕获。因为在编写测试用例时,习惯添加几个print(),以便于观察某时候测试执行到了哪个阶段。
pytest -s七、--lf或者--last-failed选项
当一个或多个测试用例运行失败时,我们常常希望能够定位失败的测试用例并且重新运行,这是--lf或者--last-failed就可以派上用场了。
即重跑上次失败的所有测试用例,如果没有失败就重跑全部。
pytest --last-failed或者
pytest --lf
如下方只运行上一次运行失败的测试用例,测试通过的未被选中
八、--ff或者--failed-first选项
--ff(--failed-first)选项与--last-failed选项的作用基本相同。
pytest命令行运行--ff(--failed-first)时,会首先运行上一次失败的测试用例,然后才会运行剩下被选中的所有的测试用例。
pytest --ff或者
pytest --failed-first
九、-v(--verbose)选项
使用-v/--verbose选项,输出的信息会更详细。最明显的区别就是每个文件中的每个测试用例都占一行(而简化输出或者默认输出的终端控制台显示为一个文件一行且测试用例的成功或失败是由./F/E等区分)。
使用-v/--verbose选项,测试的名字和结果都会显示出来,而不仅仅是一个点或字符。用例执行成功或者失败会在每行后显示PASSED/FAILED
pytest -v如下:每一个测试用例在终端控制台都会占一行
十、 -q(--quiet)选项
-q(--quiet)选项与-v(--verbose)的作用相反,-q的作用是简化输出信息。
-q(--quiet)选项不显示每个用例的详细信息,可以与--tb=line(进打印异常代码的位置)结合使用
pytest -q --tb=line例如:一个测试文件中有多个测试用例,有一个测试用例执行失败,则只会打印那一个失败的测试用例异常代码:
十一、--tb=style选项
信息回溯:某个测试用例执行失败后,pytest会列举出失败信息,包括失败出现在哪一行、是什么失败、怎么失败的、此过程我们称之为
--tb=style选项决定捕捉到失败时输出信息的显示方式。
使用--tb=no屏蔽全部回溯信息:
使用--tb=line,仅仅告诉我们错误的用例执行时发生错误的位置:
使用--tb=short,显示的回溯信息比前面两种模式的更详细:
使用--tb=long,输出最为详尽的回溯信息:
使用--tb=auto是默认值,如果有多个测试用例执行失败,进打印第一个和最后一个测试用例的回溯信息(格式与long模式的一致):
使用--tb=native只输出Python标准库的回溯信息,不显示额外信息:
十二、-r(chars)选项
-r选项不但可以帮助用户了解某些测试的原因,还可以用于查看其他测试结果。
显示 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 apytest -r A显示 warnings are enabled by default (--disable-warnings) 的信息
pytest -r w重置 list
pytest -r N 去期待陌生,去拥抱惊喜。

