一、pytest的简介

  • pytest是一个非常成熟的python的单元测试框架,比unittest更灵活,容易上手。
  • pytest可以和selenium、request,appium结合实现web自动化,接口自动化,app自动化。
  • pytest可以实现测试用例的跳过以及reruns失败用例重试。
  • Pytest可以和allur生成美观的测试报告。
  • pytest可以和jenkins持续集成
  • 有强大的插件,并且这些插件能够实现很多的实用的操作。

二、相关库

pytest-xdist 测试用例分布式执行,多cpu分布。
pytest-html,生成html格式的自动化测试报告。
pytest-ordering 用于改变测试用例的执行顺序。
Pytest-rerunfailures 用于失败后的重跑。
Pytest-html 生成html格式的自动化测试报告
allure-pytest 用于生成美观的测试报告。
安装命令:
pip install -r requirments.txt

三、使用pytest,默认的测试用例的规则及基础应用

  • 模块名必须以test_开头,或者_test结尾。
  • 测试类必须以Test开头,并且有init方法。
  • 测试方法必须以test开头

四、pytest测试用例的运行方式:

1.主函数模式

(1)运行所有用例:pytest.main(['-vs'])
(2)运行指定模块的用例:  pytest.main(['-vs', 'test_login.py'])
(3)指定目录去执行:pytest.main(['-vs', 'interface_testcase'])
(4)通过nodeid指定用例运行:nodeid由模块名,分隔符,类名,方法名,函数名组成

2.命令模式

(1)运行所有用例:pytest -v
(2)运行指定的用例:pytest  -v  test_login.py
(3)指定目录去执行:pytest  -vs     interface_testcase
(4)通过nodeid指定用例运行:nodeid由模块名,分隔符,类名,方法名,函数名组成
例子:# 运行指定类或者方法或者函数的用例pytest.main(['-vs', './interface_testcase/test_interface.py::test_04_func'])# 运行指定模块下的类里面的方法pytest.main(['-vs', './interface_testcase/test_interface.py::TestInterface::test_01_zhiliao'])

参数详解:

-s:表示输出调试的信息,包括print打印的信息
-v:表示测试用例的详细信息
-vs:两个参数可以一起使用
-n:支持多线程或者分布式运行测试用例。

如:pytest -vs ./web_testcase/test_login py -n 2
-reruns num:表示失败用例参数重跑
如: 将失败的用例多跑两遍
pytest.main([’-vs’, ‘./web_testcase/test_product.py’
-x: 表示只要有一个用例报错,测试停止
–maxfail=2:表示两个用例失败停止执行
-k:根据测试用例的部分字符串指定执行测试用例
如: pytest -vs ./web_testcase -k ‘ao’
生成报告:
–html:addopts = -vs --html ./report/report.html(配置文件设置)

3.通过读取pytest.ini配置文件运行(真实企业运用的)

**Pytest.int这个文件是pytest单元测试框架的核心配置文件。**
1.位置:一般放在项目位置的跟目录。
2.编码:编码格式必须是ANSI,可以使用notpad++修改编码格式。
3.作用:改变pytest默认的行为。
4.运行规则:不管是主函数的模式还是命令行 模式,都会去读取这个配置文件
文件内容:
[pytest]
# 命令行的参数,用空格分隔
addopts = -vs
# 测试用例的路径
testpaths = ../PythonApiTest/PyTest/web_testcase
# 模块名的规则
python_files = test*.py
# 类名的规则
python_classes =Test*
#方法名发规则
python_function =test
markers = smoke usermanage productmanage

五、pytest执行测试用例的顺序:

unittest 是通过ascll码从大到小的顺序执行
Pytest 默认从上到下
改变默认的执行顺序,使用mark标记。
如: @pytest.mark.run(order=2)

六、如何分组执行(冒烟,分模块执行,分接口和web执行)

Smok: 冒烟测试,分布在各个模块里面
Pytest -vs -m smoke
Pytest -vs -m smoke or usermanage

七、pytest跳过测试用例

(1)无条件跳过:@pytest.mark.skip(reason=“跳过”)
(2)有条件跳过:@pytest.mark.skipif(age>=18,reason=‘符合条件跳过’)

八、pytest结合allure-pytest插件生成allure测试方法

Pytest-html
allure-pytest:
1.下载,解压,配置path路径
2.生成json格式的临时报告
addopts = -vs --alluredir ./temp 生成临时目录temp
3.生成allure报告,在执行页添加下面代码
os.system(‘allure generate ./temp -o ./report --clean’)、
allure generate 命令,固定写法
./temp 临时的json格式报告的路径
-o 输出output
./report 生成allure的报告的路径
–clearn 清空./report路径原来的报告

pytest测试框架(一):初识pytest相关推荐

  1. Pytest测试框架(二):pytest 的setup/teardown方法

    系列文章目录 Pytest测试框架(一):pytest安装及用例执行 Pytest测试框架(二):pytest 的setup/teardown方法 Pytest测试框架(三):pytest fixtu ...

  2. Python编程必不可少的pytest测试框架

    进行编程测试重要的是为了更高效的完成功能的实现. pytest是基于unittest实现的第三方测试框架,比 unittest 更加的简洁.高效,并且可以完美兼容 unittest 的测试代码,无需对 ...

  3. Pytest 测试框架——数据驱动

    引言 前面已经和大家介绍过 Unittest 测试框架的数据驱动框架 DDT,以及其实现原理.今天和大家分享的是 Pytest 测试框架的数据驱动,Pytest 测试框架的数据驱动是由 pytest ...

  4. 5 分钟快速上手 pytest 测试框架

    本文将会把关于 Pytest 的内容分上下两篇,上篇主要涉及关于 pytest 概念以及功能组件知识的介绍,下篇主要以一个 Web 项目来将 Pytest 运用实践中. 为什么要做单元测试 相信很多 ...

  5. Pytest测试框架(五):pytest + allure生成测试报告

    系列文章目录 Pytest测试框架(一):pytest安装及用例执行 Pytest测试框架(二):pytest 的setup/teardown方法 Pytest测试框架(三):pytest fixtu ...

  6. pytest测试框架_聊聊 Python 的单元测试框架(三):最火的 pytest

    本文首发于 HelloGitHub 公众号,并发表于 Prodesire 博客. 一.介绍 本篇文章是<聊聊 Python 的单元测试框架>的第三篇,前两篇分别介绍了标准库 unittes ...

  7. [转]Python测试框架对比----unittest, pytest, nose, robot framework对比

    测试框架 什么是框架? 框架(Framework)是整个或部分系统的可重用设计, 框架是用来解决代码的组织及运行控制问题的. 在我们编写自动化脚本的时候,经常需要读取配置文件,读取数据文件,发送请求, ...

  8. [翻译]pytest测试框架(一)

    此文已由作者吴琪惠授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 纯官网译文而已... pytest是一个成熟的.全功能的python测试工具. pytest框架编写测试用例 ...

  9. pytest测试框架4-插件与hook函数

    一.简介 pytest的自带功能很强大,通过添加插件可以扩展功能,pytest的代码结构适合定制和扩展插件, 可以借助hook函数来实现. 把fixture函数或者hook函数添加到conftest文 ...

最新文章

  1. 解决 VSCode 配置 tab 空格数 Dart 语言无效的问题
  2. 关于asp.net2.0资源文件本地化多语言版本的一些小技巧
  3. VMware Workstation Pro 14.1.1 正式版
  4. 客户端证书错误避坑指南
  5. python 算术运算
  6. 前端学习(2631):git安装
  7. 使用printf函数输出其ascii。_输入一个N*N的矩阵,将其转置后输出。要求:不得使用任何数组(就地逆置)。...
  8. JavaScript学习(三十三)—事件对象常用的属性和方法
  9. codeforces Free Cash
  10. 珍大户《认知世界的经济学》学习笔记 -- 第17课 影响消费者的因素 -- 色彩、冷暖、秩序
  11. 【童年回忆】4399造梦西游3,各版本CE教程汇总
  12. IMX6Q开发板使用USB直接连接HP LaserJet 1020 plus打印机打印。
  13. 汽车故障诊断技术【11】
  14. 无线桥接dhcp服务器不启动,TP-Link路由器桥接提示“获取IP地址失败,请检查DHCP是否开启...
  15. matlab日期转儒略历,matlab儒略日转为日期
  16. 让猴子游泳,让鸭子爬树
  17. 用MySQL创建数据库和数据库表(linux终端操作)
  18. lbs多城市切换php源码,多省份多城市多区县切换 专业版(dicky_multicityswitch) dz插件分享,可以随意切换到其它地区分站功能...
  19. Ubuntu 22.10 (Kinetic Kudu) 发布
  20. Django 之自动化部署

热门文章

  1. 元宇宙商标的致富路,断了
  2. 语音识别相关资料整理
  3. antDesign pro 默认不支持ie ,360相关异常是因为使用ie内核
  4. JQuery选择器和JQuery库文件引入
  5. Zhang Xiao
  6. 科学计算机中logo,简单做了个Logo~
  7. linux沙箱隔离_Android系统的沙箱隔离机制
  8. Maven resource 配置中include与exclude及其filter的使用
  9. 网络爬虫逆向(全国建筑市场监管公共服务平台)
  10. 小米电视广告_教程福利 | 手把手教你去除小米电视/小米盒子的内置广告!