pytest学习笔记01

参考博文地址:https://www.cnblogs.com/yoyoketang/tag/pytest/
官方文档地址:https://docs.pytest.org/en/latest/

命名规则

文件名以test_*.py文件和*_test.py
以 test_ 开头的函数
以 Test 开头的类
以 test_ 开头的方法
所有的包 package 必须要有__init__.py文件

pytest常用执行命令

pytest -s :执行并展示print信息
pytest -k "Class and not method":执行命名为包含Class的测试类,不执行命名包含method的测试方法(注意双引号)
pytest test_01.py::TestClass::test_method:执行test_01.py文件下的TestClass类下的test_method方法
pytest -m hahaha:执行@ pytest.mark.hahaha装饰器修饰的测试
pytest -x :遇到错误时停止测试
pytest --maxfail=1:用例错误个数达到指定数量时停止测试(注意双短横线)

用例运行级别

  • 模块级(setup_module/teardown_module)开始于模块始末,全局的
  • 函数级(setup_function/teardown_function)只对函数用例生效(不在类中)
  • 类级(setup_class/teardown_class)只在类中前后运行一次(在类中)
  • 方法级(setup_method/teardown_method)开始于方法始末(在类中)
  • 类里面的(setup/teardown)运行在调用方法的前后(setup_method和teardown_method的功能和setup/teardown功能是一样的,一般二者用其中一个即可)

setup_module/teardown_module的优先级是最大的,然后函数里面用到的setup_function/teardown_function与类里面的setup_class/teardown_class互不干涉

fixture

fixture(scope="function", params=None, autouse=False, ids=None, name=None): 
使用装饰器标记fixture的功能
可以使用此装饰器(带或不带参数)来定义fixture功能。 fixture功能的名称可以在以后使用
引用它会在运行测试之前调用它:test模块或类可以使用pytest.mark.usefixtures(fixturename标记。 
测试功能可以直接使用fixture名称作为输入参数,在这种情况下,夹具实例从fixture返回功能将被注入。
:arg scope: scope 有四个级别参数 "function" (默认), "class", "module" or "session".
:arg params: 一个可选的参数列表,它将导致多个参数调用fixture功能和所有测试使用它
:arg autouse:  如果为True,则为所有测试激活fixture func 可以看到它。 如果为False(默认值)则显式需要参考来激活fixture
:arg ids: 每个字符串id的列表,每个字符串对应于params 这样他们就是测试ID的一部分。 如果没有提供ID它们将从params自动生成
:arg name:   fixture的名称。 这默认为装饰函数的名称。 如果fixture在定义它的同一模块中使用,夹具的功能名称将被请求夹具的功能arg遮蔽; 
			 解决这个问题的一种方法是将装饰函数命名  “fixture_ <fixturename>”然后使用”@ pytest.fixture(name ='<fixturename>')”。
  • scope=“function”,针对函数
  • scope=“class”,针对class
  • scope=“module”,针对一个 .py 文件
  • scope=“session”,针对一次运行

另:

  1. fixture里面的teardown用yield来唤醒teardown的执行
  2. 除了yield可以实现teardown,在request-context对象中注册addfinalizer方法也可以实现终结函数。
  3. yield和addfinalizer方法都是在测试完成后呼叫相应的代码。但是addfinalizer不同的是:
    • 他可以注册多个终结函数。
    • 这些终结方法总是会被执行,无论在之前的setup code有没有抛出错误。这个方法对于正确关闭所有的fixture创建的资源非常便利,即使其一在创建或获取时失败

conftest.py配置

pytest里面默认读取conftest.py里面的配置,conftest.py配置需要注意以下点:

  • conftest.py配置脚本名称是固定的,不能改名称
  • conftest.py与运行的用例要在同一个pakage下,并且有__init__.py文件
  • 不需要import导入conftest.py的,pytest用例会自动查找

测试报告(pytest-html)

安装

$ pip install pytest-html

执行(生成的报告有多个文件)

$ pytest --html=report.html
$ pytest --html=./report/report.html

执行(生成单个文件的报告)

$ pytest --html=report.html --self-contained-html
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值