pytest基本使用指南
注:关于pytest的基础要点个人已经总结好了,
一. 启动:
在主函数main下启动:pytest.main(['-q','test_demo.py'])
在命令行启动:pytest ./test_demo.py
按标签启动:pytest -m demo(前提是在pytest.ini里配上了标签)
在命令行启动多个:pytest test_demo1.py test_demo2.py
指定目录启动:pytest.main("d:/pyse/pytest/")
运行模块中指定用例:pytest.main("-v -s spec_001_modul_test.py::test_001_spec")
运行类中指定用例:pytest.main("-v -s spec_001_modul_test.py::Test_Class::test_003_spec")
运行模块中包含demo名称的用例:pytest.main("-v -s -k demo test_demo.py")
运行当前文件夹匹配Test_Class的用例:pytest.main('-s -v -k Test_Class')
运行规则:pytest 目录/文件::类名::函数名 或者 pytest 目录/文件::函数名
二. 启动参数说明:
-s: 显示程序中的print/logging输出
-v: 丰富信息模式, 输出更详细的用例执行信息
-q: 安静模式, 不输出环境信息,只给结果
-k:关键字匹配,用and区分:匹配范围(文件名、类名、函数名)
三. setup/teardown:
setup和teardown函数:运行在每个测试方法的始末
setup_class和teardown_class函数:运行在类的始末
四. pytest.ini:
参数最好都放配置文件里,不用再main里放。每个参数见名知意啦~。由于编码问题,配置文件里不要出现中文。
- [pytest]
- addopts = -v --html=report/report.html
- # addopts = -v --html=report/report.html --rerun=1 --count=1
- # addopts = -v --alluredir reports/raw_report
- testpaths = ./
- python_files = test_*.py
- python_classes = Test*
- python_functions = test_*
- norecursedirs = .venv log report common data .pytest_cache
- markers =
- l1:level-1 # by priority
- l2:level-2
- l3:level-3
- smoke:smoke test # by test type
- integrate:integrate test
- demo:for demo # by logic
- login:login module
- upload:upload module
- review:review module
五. pytest-html:
安装它
用法:配置文件里添加报告参数:addopts = -s --html=./report.html,若要生成xml文件改一下就行
六. pytest-ordering:
安装它
用法:函数上面加@pytest.mark.run(order=n)
优先级:order值全为正数或全为负数时, 值越小,优先级越高;正数和负数同时存在,正数优先级高
七. pytest-rerunfailures:
安装它
用法:命令行格式,pytest --reruns n。n为重试的次数;或添加失败重试参数,即:addopts = -s --reruns 2 --html=./report.html
记住命令行是reruns,最好配置参数
八. fixture:
功能:通常会被用于完成预置处理和重复操作。如在测试网站的功能时,每个测试用例都要登录和退出,利用fixture就可以只做一次;完成setup和teardown操作,处理数据库或文件的打开、关闭操作;将数据提前写入数据库或通过params返回给测试用例。强大吧!
pytest.fixture(scope='function', params=None, autouse=False, ids=None, name=None)
参数解释:
"scope": 被标记方法的作用域;
"function": 默认值,表示每个测试方法都要执行一次
"class": 作用于整个类, 表示每个类的所有测试方法只运行一次
"module": 作用于整个模块, 每个module的所有测试方法只运行一次.
"session": 作用于整个session, 每次session只运行一次. ️(此方法慎用!!)
params: list类型,默认None, 接收参数值,对于param里面的每个值,fixture都会去遍历执行一次.
autouse: 是否自动运行,默认为false, 为true时此session中的所有测试函数都会调用fixture
以上的所有参数也可以不传。
把返回值作为参数使用:某个功能用例上面放@pytest.fixture(),然后该函数名可以作为参数放别的函数里。
直接使用:@pytest.mark.usefixtures("before")
九. skipif:
@pytest.mark.skipif(condition, reason=None)
参数解释:
condition: 跳过的条件,必传参数
eason: 标注原因,必传参数
十. xfail:
@pytest.mark.xfail(condition=None, reason=None, raises=None, run=True, strict=False)
常用参数:
condition:预期失败的条件,必传参数
reason:失败的原因,必传参数
十一. parametrize:
@pytest.mark.parametrize(argnames,argvalues)
参数值为N个,测试方法就会运行N次
常用参数:
argnames:参数名
argvalues:
参数对应值,类型必须为list
当参数为一个时,参数格式:[value]
当参数个数大于一个时,格式为:[(param_value1,param_value2.....),(param_value1,param_value2.....)]
十二. 其他:
不需要在main里面写pytest.main,只要是符合命名,默认为pytest启动,都会自动调用pytest
如果两个测试函数体里面的内容一样,只会输出一次结果。
改了哪儿,直接运行后测的就是哪儿。需要重新定位鼠标,一般把改了的测试函数放最后。这条很重要,不然会以为pytest框架有bug,只是写这个框架的人脑回路很奇怪,但这样很方便。
十三. 断言
即python的断言:
assert xx:判断xx为真
assert not xx:判断xx不为真
assert a in b:判断b包含a
assert a == b:判断a等于b
assert a !=b,"判断a不等于b"(加上括号后面有说明)
作者留言
测试行业里不思进取的人太多了,哪怕整理好他们也不会用,可能觉得没多大用处吧~,此篇花费很长时间整理的,禁止转载否则见底部声明哈!
原创不易,如果觉得本文对你有帮助,记得打赏噢O(∩_∩)O,您的支持是我创作路上最大的动力~

pytest基本使用指南的更多相关文章
- ApacheCN Python 译文集 20211108 更新
Think Python 中文第二版 第一章 编程之路 第二章 变量,表达式,语句 第三章 函数 第四章 案例学习:交互设计 第五章 条件循环 第六章 有返回值的函数 第七章 迭代 第八章 字符串 第 ...
- pytest 10 skip跳过测试用例
pytest.mark.skip可以标记无法在某些平台上运行的测试功能,或者你希望失败的测试功能 skip意味着只有在满足某些条件时才希望测试通过,否则pytest应该跳过运行测试.常见事例时非win ...
- pytest八:skip 跳过用例
这是一个快速指南,介绍如何在不同情况下跳过模块中的测试1.无条件地跳过模块中的所有测试:pytestmark = pytest.mark.skip("all tests still WIP& ...
- pytest文档12-skip跳过用例
前言 pytest.mark.skip可以标记无法在某些平台上运行的测试功能,或者您希望失败的测试功能 skip意味着只有在满足某些条件时才希望测试通过,否则pytest应该跳过运行测试. 常见示例是 ...
- Python 最强 IDE 详细使用指南!-PyCharm
PyCharm 是一种 Python IDE,可以帮助程序员节约时间,提高生产效率.那么具体如何使用呢?本文从 PyCharm 安装到插件.外部工具.专业版功能等进行了一一介绍,希望能够帮助到大家. ...
- Pytest权威教程12-跳过(Skip)及预期失败(xFail): 处理不能成功的测试用例
目录 跳过(Skip)及预期失败(xFail): 处理不能成功的测试用例 Skip跳过用例 xFail:将测试函数标记为预期失败 Skip/xFail参数设置 返回: Pytest权威教程 跳过(Sk ...
- 【转载】Python 最强编辑器PyCharm详细使用指南!
PyCharm 是一种 Python IDE,可以帮助程序员节约时间,提高生产效率.那么具体如何使用呢?本文从 PyCharm 安装到插件.外部工具.专业版功能等进行了一一介绍,希望能够帮助到大家.机 ...
- Python 最强 IDE 详细使用指南!
PyCharm 是一种 Python IDE,可以帮助程序员节约时间,提高生产效率.那么具体如何使用呢?本文从 PyCharm 安装到插件.外部工具.专业版功能等进行了一一介绍,希望能够帮助到大家.作 ...
- pytest学习纪要123-针对经常用到的内容详实记录
pytest123 本文主要参考:https://www.cnblogs.com/yoyoketang/tag/pytest 如有侵权,请站内联系我 目录 pytest123 1.setup和tear ...
- Sentry 开发者贡献指南 - 配置 PyCharm
概述 如果您使用 PyCharm 进行开发,则需要配置一些内容才能运行和调试. 本文档描述了一些对 sentry 开发有用的配置 配置 Python 解释器:(确保它是 venv 解释器)例如 ~/v ...
随机推荐
- AI绘画提示词创作指南:DALL·E 2、Midjourney和 Stable Diffusion最全大比拼 ⛵
作者:韩信子@ShowMeAI 深度学习实战系列:https://www.showmeai.tech/tutorials/42 自然语言处理实战系列:https://www.showmeai.tech ...
- Day30.1:Math的常用方法
Math 1.1 Math概述 Math类在Java.lang包下,不需要导包 public final class Math extends Object Math含有基本的数字运算方法,没有构造器 ...
- 【大数据面试】【数仓项目】分层:ODS层、DWD层、DWS层、ADS层构成、操作
一.ODS层 1.保持数据原貌,不做任何修改 2.数据压缩:LZO压缩,减少磁盘空间 3.创建的是分区表:可以防止后续的全表扫描 包括 用户行为:string line dt ods_start ...
- Burpsuite2022.1详细图文安装教程(含工具链接)
应用概述: Burp Suite 是用于攻击web 应用程序的集成平台,包含了许多工具.Burp Suite为这些工具设计了许多接口,以加快攻击应用程序的过程.所有工具都共享一个请求,并能处理对应 ...
- 铁威马NAS如何开启二次验证提高系统安全性
想到登录TNAS时更安全?直接开启OTP二次验证,通过 TNAS mobile生成的一次性密码登录NAS存储,简单设置,提升TOS系统访问安全性给你TNAS双重保护. 1.首先,确认你的TOS系统在5 ...
- DataTables实现按分组小计
效果图:
- Web应用怎样获取Access Token?
1.在联盟创建服务器应用 参考文档:开发准备 2.获取用户级Access Token 2.1 获取code 参考文档:接入华为帐号获取凭证 2.1.1 先按照跳转链接进行配置url https://o ...
- 【进阶篇】Redis实战之Jedis使用技巧详解
一.摘要 在上一篇文章中,我们详细的介绍了 redis 的安装和常见的操作命令,以及可视化工具的介绍. 刚知道服务端的操作知识,还是远远不够的,如果想要真正在项目中得到应用,我们还需要一个 redis ...
- [MySQL] 索引的使用、SQL语句优化策略
目录 索引 什么是索引 索引的创建与删除 创建索引 删除索引 索引的使用 使用explain分析SQL语句 最佳左前缀 索引覆盖 避免对索引列进行额外运算 SQL语句优化 小表驱动大表 索引 什么是索 ...
- Java8常见函数式接口总结
函数式接口 函数式接口:有且仅有一个抽象方法的接口. 使用@FunctionalInterface注解来标记.如果接口不是函数式接口就会编译出错 满足条件的接口即使不加上注解,那也是函数式接口 函数式 ...