前言  

pytest提供一些执行参数,来帮助用户更好地定位问题(详细信息打印或报错的详细信息)和更高效地执行测试用例(多线程执行测试用例,跳过测试用例等),例如,上一章中测试用例函数中有print,但执行pytest后,输出log中却没有打印出来。

可以在cmd中输入

pytest -h

来查看有哪些pytest的可执行参数

pytest 执行参数

pytest常用执行参数:

-s:详细内容,将print的内容打印出来等

-x:遇到错误的用例,立即退出执行,并输出结果

-k:执行指定的用例项,可以是测试函数名,也可以是类名,也可以是模块名,以及目录名称,例如:pytest -k “test_03″也可以加入not来不执行一些用例,例如:pytest -k “not test_03″也可以通过 模块::类::用例 来执行指定用例,例如:pytest test_cmd_arg.py::Test_01::test_03

-m:执行被标记的用例,标记需要用到pytest的装饰器@pytest.mark.标记名称

-v:查看详细的报告内容

-q:查看简洁的测试报告

–collect-only:把待执行的用例全部展示出来

–maxfail=n:运行失败n次后,停止测试

–lf:只执行上次失败的用例

–tb=no:不展示用例失败的错误详情。 –tb=line:展示用例失败的具体行数 –tb=short:展示更加详细的错误信息

–durations=N:把最耗时间的用例N个用例展示出来,N表示最慢的几个

话不多说,直接上测试用例,动手实操,

test_cmd_arg.py:

import pytest

class Test_01:
    def test_01(self):
        print('test_01执行')
        assert 1 == 1
    def test_02(self):
        print('test_02执行')
        assert 2 == 2
    def test_03(self):
        print('test_03执行')
        assert 3 == 4

if __name__ == '__main__':
    pytest.main(['-s'])

 

-s:详细内容,将print的内容打印出来等

可以直接在pytest.main()中输入-s参数,例如pytest.main([‘-s’]),但还是推荐在cmd中执行pytest 再加上执行参数,下面推荐2种方式快速打开当前路径的cmd窗口

1、pycharm中,在测试用例文件处鼠标右键-Open in Terminal

2、打开测试用例文件路径的文件夹管理系统,直接在路径输入框中输入cmd命令回车

 

 输出结果:

 

 可以看到test_1.py和test_cmd_arg.py中测试用例的print中的内容都已打印

 

-x:遇到错误的用例,立即退出执行,并输出结果

 将test_cmd_arg.py::Test_01::test_02中的assert的结果改为2 ==3,再执行pytest -x

输出结果:

 

 可以看到test_cmd_arg.py::Test_01::test_02报错后,直接退出执行,test_cmd_arg.py::Test_01::test_03并没有被执行

 

-k:执行指定的用例项,可以是测试函数名,也可以是类名,也可以是模块名,以及目录名称,例如:pytest -k “test_03”  (必须是双引号!!)

pytest -k “test_03″输出结果如下:

 

 可以看到只执行测试用例函数名为test_03的用例,其余搜索到的测试用例直接跳过

也可以加入not来不执行一些用例,例如:pytest -k “not test_03”

执行结果如下:

 

 test_03的测试用例因为只有test_cmd_arg.py::Test_01中存在,所以直接跳过1个用例

 

补充:

除了-k参数执行指定用例外,可以通过 模块::类::用例 来执行指定用例,例如:pytest test_cmd_arg.py::Test_01::test_03

 

 

-m:执行被标记的用例,标记需要用到pytest的装饰器@pytest.mark.标记名称

在Fail的测试用例加上@pytest.mark.Fail的装饰:

class Test_01:
    def test_01(self):
        print('test_01执行')
        assert 1 == 1

    @pytest.mark.Fail
    def test_02(self):
        print('test_02执行')
        assert 2 == 3
    @pytest.mark.Fail
    def test_03(self):
        print('test_03执行')
        assert 3 == 4

if __name__ == '__main__':
    pytest.main()

 

在cmd中执行pytest -m Fail

 

 可以看到2个用例均已执行,其余用例跳过

 

-v:查看详细的报告内容

 

 

-q:查看简洁的测试报告

 

 可以看到,缺少了之前的环境打印,但FAILED的测试用例具体位置还是打印出来了

 

–collect-only:把待执行的用例全部展示出来

 

 

–maxfail=n:运行失败n次后,停止测试

 

 将maxfail=1,设置为运行失败一次后,立马退出执行,可以看到test_cmd_arg.py::Test_01::test_02执行失败后,执行就退出了,test_cmd_arg.py::Test_01::test_03并没有被执行

 

–lf:只执行上次失败的用例

 

 

–tb=no:不展示用例失败的错误详情

 

可以看到错误代码行数、错误代码以及错误类型都没有打印

 

–tb=line:展示用例失败的具体行数

 

 打印出了具体行数,但错误代码以及错误类型还是没有打印

 

–tb=short:展示更加详细的错误信息

 

 错误信息打印与正常执行pytest打印出来的错误信息基本一致了

 

–durations=N:把最耗时间的用例N个用例展示出来,N表示最慢的几个

给其中一个测试用例加上time.sleep(2),强制休眠2s,具体示例:

    @pytest.mark.Fail
    def test_03(self):
        print('test_03执行')
        time.sleep(2)
        assert 3 == 4

在cmd中执行pytest –durations=1,将最慢的一个测试用例展示出来,那么非test_03莫属,毕竟强制休眠了2s,执行结果如下

 

 可以看到slowest 1 durations下已经打印出最慢的测试用例,已经所运行的性能时间

 

 常用的pytest执行参数就如上这些,如果有需要了解的其他执行参数,可在pytest -h中查询

 

原文地址:http://www.cnblogs.com/trystudy/p/16921768.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性