IT学习站-137zw.com

more +资源更新Forums

more +随机图赏Gallery

2020一级造价工程师交通课件视频讲义百度云网盘下载2020一级造价工程师交通课件视频讲义百度云网盘下载
大神教你玩转excel高效人生大神教你玩转excel高效人生
开运网付费开源商业版|风水起名八字算命易经周易源码开运网付费开源商业版|风水起名八字算命易经周易源码
李梦娇2020年《公共基础知识》事业尊享套餐李梦娇2020年《公共基础知识》事业尊享套餐
马哥Linux高端运维云计算就业班 强烈推荐马哥Linux高端运维云计算就业班 强烈推荐
Flutter视频教程_Flutter仿京东商城项目实战视频教程Flutter视频教程_Flutter仿京东商城项目实战视频教程

2、pytest -- 使用和调用

2、pytest -- 使用和调用

[复制链接]
462710480 | 显示全部楼层 发表于: 2019-11-14 14:50:00
462710480 发表于: 2019-11-14 14:50:00 | 显示全部楼层 |阅读模式
查看: 145|回复: 0

你还没有注册,无法下载本站所有资源,请立即注册!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
目录
            
    1. 通过python -m pytest调用pytest

你可以通过python的解释器来执行测试:但是,这和直接执行pytest [...]命令的效果几乎是一模一样的;
2. pytest执行结束时返回的状态码

pytest命令执行结束,可能会返回以下六种状态码:

  • 0:(OK)所有收集到的用例测试通过
  • 1:(TESTS_FAILED)有用例测试失败
  • 2:(INTERRUPTED)用户打断测试执行
  • 3:(INTERNAL_ERROR)测试执行的过程中,发生内部错误
  • 4:(USAGE_ERROR)pytest命令使用错误
  • 5:(NO_TESTS_COLLECTED)没有收集到测试用例
它们在枚举类 _pytest.main.ExitCode 中声明。并且,其作为公开API的一部分,能够直接引入和访问:3. 获取帮助信息
4. 最多允许失败的测试用例数

当达到最大上限时,退出执行;如未配置,则没有上限:5. 执行指定的测试用例

pytest支持多种方式来执行特定的测试用例:
5.1. 执行指定模块中的测试用例
5.2. 执行指定目录下所有的测试用例
5.3. 执行文件名、类名或者函数名中包含特定关键字的测试用例

执行当前目录下,名字包含_class但不包含two的测试用例:
注意:python的关键字不可以应用在-k选项中,例如,class、def等。
5.4. 执行指定nodeid的测试用例

pytest为每一个收集到的测试用例指定一个唯一的nodeid。其由模块名加说明符构成,中间以::间隔。
其中,说明符可以是类名、函数名以及由parametrize标记赋予的参数在上述示例中,我们创建了三个测试用例,分别对应不同的说明符

  • 指定函数名执行
  • 指定类名+函数名执行
  • 指定由parametrize标记赋予的参数执行这里对参数x、y赋值的形式是[1-1],中间以-间隔;
    单个或多个参数的赋值形式以此类比;并且,只能为[1-1]或者[3-4],其它的会报错;
注意:
这里我们也可以使用-k选项达到同样的效果:

  • 首先,可以使用--collect-only选项查看用例名:
  • 然后,使用-k执行符合规则的用例,例如:执行test_nodeid.py::test_one:结果和执行pipenv run pytest -q -s src/chapter-2/test_nodeid.py::test_one一样;
5.5. 执行指定标记的用例
5.6. 执行指定包中的测试用例
pytest会引入pkg.testing包,并在它的系统目录下搜寻测试用例并执行;
6. 修改回溯信息的输出模式

pytest回溯信息的输出一共有六种模式:auto/long/short/line/native/no,用--tb选项指定:--full-trace是一种比--tb=long更详细的输出模式。它甚至能观察到用户打断执行(Ctrl+C)时的回溯信息,而上述六种模式默认是不输出此类信息的。
7. 总结报告

-r选项可以在执行结束后,打印一个简短的总结报告。在执行的测试用例很多时,可以让你对结果有个清晰的了解:-r选项后面要紧接这一个参数,用于过滤显示测试用例的结果。
以下是所有有效的字符参数:

  • f:失败的
  • E:出错的
  • s:跳过执行的
  • x:跳过执行,并标记为xfailed的
  • X:跳过执行,并标记为xpassed的
  • p:测试通过的
  • P:测试通过,并且有输出信息的;即用例中有print等
  • a:除了测试通过的,其他所有的;即除了p和P的
  • A:所有的
上述字符参数可以叠加使用,例如:我们期望过滤出失败的和未执行的:8. 失败时加载PDB(Python Debugger)环境

PDB是python内建的诊断器,pytest允许通过以下命令在执行失败时进入这个诊断器模式:pytest会在测试用例失败(或者Ctrl+C)时,调用这个诊断器:你还可以访问测试用例的本地变量x;
失败的信息存储在sys.last_value, sys.last_type, sys.last_traceback变量中,你可以在交互环境中访问它们;
使用exit命令,退出PDB环境;
9. 开始执行时就加载PDB环境

通过以下命令,pytest允许你在每个测试用例开始执行时,就加载PDB环境:10. 设置断点

在测试用例代码中添加import pdb;pdb.set_trace(),当其被调用时,pytest会停止这条用例的输出:

  • 其他用例不受影响;
  • 通过continue命令,退出PDB环境,并继续执行用例;
11. 使用内置的中断函数

python 3.7介绍了一个内置breakpoint()函数。pytest可以在以下场景中支持使用:

  • 当breakpoint()被调用,并且PYTHONBREAKPOINT为None时,pytest会使用内部自定义的PDB代替系统的;
  • 测试执行结束时,自动切回系统自带的PDB;
  • 当加上--pdb选项时,breakpoint()和测试发生错误时,都会调用内部自定义的PDB;
  • --pdbcls选项允许指定一个用户自定义的PDB类;
12. 分析测试执行时间

获取执行最慢的10个测试用例:默认情况下,pytest不会显示执行时间
137zw.com IT学习站致力于免费提供精品的java技术教程和python技术教程,CCNA书籍/资料/CCNP书籍/资料教程/CCIE书籍/资料/H3C学习/认证/一级建造师考试/微软学习/认证/包括基础教程和高级实战教程,同时也提供分享网站源码下载和互联网相关一系列的技术教程,我们想做的就是让知识分享更有价值!(IT学习站官方唯一域名地址:www.137zw.com 请谨防假冒网站!)本站所有资源全部收集于互联网或网友自行分享,分享目的仅供大家学习与参考,如无意中侵犯您的合法权益,请联系本站管理员进行删除处理!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

浙ICP备19022368号-1|Archiver|手机版|IT学习站-137zw.com

GMT+8, 2020-9-20 23:26 , Processed in 0.153457 second(s), 45 queries .

快速回复 返回顶部 返回列表