首页 > 其他分享 >pytest框架

pytest框架

时间:2023-10-30 18:33:38浏览次数:27  
标签:__ 执行 框架 py pytest test main

pytest 安装
a)安装
pip install pytest
b)验证安装
pytest --version
1、pytest的⽤例运⾏规则
1)pytest将在当前⽬录及其⼦⽬录中运⾏所有格式为test.py或者test.py⽂件
2)测试⽅法/测试函数 默认必须是test开头
3) 测试类必须是Test开头
4) 测试类不能有构造⽅法 init,会影响用例的收集
2、pytest常⽤运⾏参数
"-s" 参数 ⽤于关闭捕捉,从⽽输出打印信息到控制台,如果不输入【-s】,测试报告中会捕捉打印信息,输入后不再捕捉打印信息
"-v" 参数 ⽤于显⽰具体的⽤例执⾏信息‘
“-k” 参数+用例名:运⾏名称中包含某字符串的测试⽤例
"-q"参数:简化输出信息
“-x” 参数: 如果出现⼀条测试⽤例失败,则退出测试

 指定⽬录以及特定类或⽅法执⾏
pytest.main(['-s','./doc/test_112233.py::TestDemo::test_case_03'])

3、使用main运行的时候,是按照层级依次往下查找的,不会往上查找(***同一个目录下,最好只有一个main文件和用来执行框架***

if __name__ == '__main__':

    pytest.main(['-s'])

 图中这种层级,运行了4个同级的文件和一个下级test_112233.py文件,自动寻找Test_开头或者_Test结尾的类,和test_开头或_test结尾的方法/函数。

4、生成简单报告

pytest.main(['--junit-xml=./report/junit_report01.xml'])

5、执行失败控制

# 用例失败控制
    # pytest.main(['--maxfail=1'])  # 执行的时候最大失败次数为1,失败1条就停止运行。

6、通过标记表达式取执行,

  通常用来版本控制,比如V1.0和V2.0版本的用例在一个文件中,只想执行V2.0的时候,表达式取V2.0

  先在项目中建立一个简单文件,命名为pytest.ini 的配置文件。写入一些信息。如下:

  (***同一个目录下,最好只有一个main文件和pytest.ini用来执行框架***

[pytest]
markers =
    smoke: marks tests as smoke
    slow
    happy
    serial

然后在脚本文件的用例前加装饰器

 然后执行,用标记表达式执行

# pytest.main(['-m', 'smoke'])

  7、指定.py文件执行

if __name__ == '__main__':
    pytest.main(['test_many.py'])     # 直接填写[".py文件名"]

8、多线程执行

    
# 需要先安装对应插件 pytest-xdist: pip install pytest-xdist(不安装会报错)
# 将测试执行发送给多个CPU
    # pytest.main(['-n', '2', 'test_many.py'])

    # 使用与计算机具有CPU内核一样多的进程
    # pytest.main(['-n', 'auto', 'test_many.py'])

9、失败重新运行用例

pytest-rerunfailures是⼀个可以使pytest重新运⾏测试的插件,以消除间歇性故障。
安装要求:
您需要具备以下先决条件才能使⽤pytest-rerunfailures:
安装:pip install pytest-rerunfailures
Python 3.5,最⾼3.8或PyPy3
pytest 5.0或更⾼版本
if __name__ == '__main__':
    # 重新运行失败的用例,指定失败次数最大为3
    # pytest.main(['--reruns', '3', 'test_rerun.py'])

    # 在每次失败重跑之前,增加一个延迟时间
    pytest.main(['--reruns', '3', '--reruns-delay', '2', 'test_rerun.py'])

10、pytest的setup和teardown函数

  ***自动化中的用途,举例:比如setup用作用例执行前的数据处理,,teandown用来关闭浏览器***

    不同的setup函数不要混用,在最新版本中,是不支持混用的
    setup_module/teardown_module:在当前文件中,所有的用例执行之前执行
    setup_function/teardown_function:在每个测试函数之前和之后执行
    setup_method/teardown_method:在每个测试函数之前和之后执行(在类中每次都执行,在类的外面,只执行一次)
    # 在每个测试函数之前和之后执行(在类中每次都执行,在类的外面,只执行一次) 类的外面:setup和teardown只运行一次

 类的里面:setup和teardown每次都执行

 

 

标签:__,执行,框架,py,pytest,test,main
From: https://www.cnblogs.com/gezirui/p/17798527.html

相关文章

  • 技术漫谈|IVR通用开发框架简说
     IVR为InteractiveVoiceResponse的缩写,意为交互式语音应答(系统)。它可以应答客户的呼叫,然后为呼叫者提供语音导航或自助服务,呼叫者可通过按键输入或使用语音命令进行选择。随后,IVR可通过呼叫路由将呼叫转移到座席或自助服务应用程序。在金融领域,IVR应用系统也被银行称之为电话......
  • Pytest基础
    一、前言  Pytest基于Python设计,是一款开源免费、功能全面的单元测试框架,车载以太网测试中被广泛使用。二、工具说明Pycharm2023pytest7.4.3三、创建工程  创建工程时重点要求使用VituralEnvironment,这里直接选择。四、Pytest环境安装在根目录下创建文件Requiremen......
  • 技术漫谈|IVR通用开发框架简说
    IVR为InteractiveVoiceResponse的缩写,意为交互式语音应答(系统)。它可以应答客户的呼叫,然后为呼叫者提供语音导航或自助服务,呼叫者可通过按键输入或使用语音命令进行选择。随后,IVR可通过呼叫路由将呼叫转移到座席或自助服务应用程序。在金融领域,IVR应用系统也被银行称之为电话银行......
  • 于璠访谈录 | AI 框架应该和而不同?
    点击以下链接收听本期“大咖访谈”播客,与大咖面对面:https://www.xiaoyuzhoufm.com/episodes/653f236d21aad9875428c3f2++刘天栋++:访谈主持,开源雨林社区顾问、开源社联合创始人、ASFmember++于璠++:访谈嘉宾,昇思MindSpore技术总经理,AIforScience实验室主任:::hljs-cen......
  • Util应用框架核心(二) - 启动器
    本节介绍Util项目启动初始化过程.文章分为多个小节,如果对设计原理不感兴趣,只需阅读基础用法部分即可.基础用法查看Util服务配置,范例:varbuilder=WebApplication.CreateBuilder(args);builder.AsBuild().AddAop().AddSerilog().AddUtil();注意其中调用......
  • 基于SpringBoot框架的教学评价系统-计算机毕业设计源码+LW文档
    摘要随着时代的发展,我国的教育水平在不断的提高,但是很多时候为了更好的提高教学的质量,会让学生对当前的教学进行评价,教育工作者根据学生的评价发现当下教学中的一些不足,从而更好的提高教学质量,为了让教学评价变的更加的方便我们开发了本次的教学评价系统。本系统从用户的角度出......
  • Util应用框架核心(一) - 服务配置
    本文介绍在项目中如何配置Util依赖服务.文章分为多个小节,如果对设计原理不感兴趣,只需要阅读基础用法部分即可.基础用法Asp.NetCore项目服务配置调用WebApplicationBuilder实例的AsBuild方法,并以链式调用Util服务扩展.范例varbuilder=WebApplication.CreateBu......
  • Android|集成 slf4j + logback 作为日志框架
    最近在做一个AndroidAPP的日志改造时,想要满足如下需求:能够很方便地使用可变参数的方式输出日志;日志能够根据级别输出到控制台和文件;能够按照日期和文件大小进行日志文件的切割,滚动保存指定天数的日志,自动清理旧日志。基于这个需求,我搜了一下「Android日志框架」,大多网友推荐的......
  • rust ui lib 跨平台ui框架
    部分条目未更新,请自行到项目主页查看。框架StarsIssue活跃程度版本TauriStarIssueegui+bevyStarIssueSlintStarIssueIcedDioxusGTKFlutter框架网页手机PC嵌入式额外语言Taurieguibe......
  • 一个轻量级golang ORM框架gdbcTemplate
    今天介绍一个自己写的轻量级golangORM框架gdbcTemplate,目前支持mysql,postgresql等数据库项目地址位于https://github.com/guoapeng/gdbctemplate以下摘自readme文件,里面有示例供参考.1.readmefilealightweightgolangORMframeworksimilartojdbcinjavatech......