python pytest框架

一、pytest单元测试框架

1. 什么是单元测试框架
单元测试是指在软件开发当中,针对软件的最小单位(函数、方法)进行正确性的检查测试。
2.单元测试框架
Java:junit和testng
Python:unittest和pytest
3.单元测试框架主要做什么?
测试发现:从多个文件里面云找到我们测试用例
测试执行:按照一定的顺序和规则去执行并生成结果
测试判断:通过判断断言预期结果 和实际结果的差异
测试报告:统计测试进度,耗时,通过率,生成测试报告

二、单元测试框架和自动化测试框架有什么关系?

  1. 什么是自动化测试框架
  2. 自动化测试框架的作用
    提高测试效率,降低维护成本
    减少人工干预,提高测试的准确率,增加代码的重用性
    核心思想是让不懂代码的人也能够通过这个框架去实现自动化测试
  3. pytest单元测试框架和自动化测试框架的关系
    单元测试框架:只是自动化测试框架中的组成部分之一
    自动化测试框架:只是自动化测试框架中的组成部分之一 数据驱动……

关健字驱动
全局配置文件的封装
selenium,requests二次封装
断言
报告邮件
更多…..

接口自动化测试

  1. requests的二次封装
  2. yarml数据驱动
  3. 关健字驱动
  4. 多接口串联
  5. 全局配置文件
  6. 日志监控(调试日志,文件日志,邮件日志)
  7. yaml测试用例的封装(请求封装、读写封装、断言封装)
  8. allure报告的定制开发
  9. pytest只是这个框架中的一个组成部分

接口自动化、web自动化、APP自动化 三大部分

三、pytest简介

  1. pytest是一个非常成熟的python的单元框架,比unittest更灵活
  2. pytest可以和selenium,requests,appium结合实现web自动化,接口自动化,app自动化
  3. pytest可以实现测试用例的跳过及reruns失败用例重试。
  4. pytest可以和allure生成非常美观的测试报告
  5. pytest可以和Jekins持续集成
  6. pytest有很多非常强大的插件,并且这些插件能够实现很多的实用的操作。

需要的依赖包:
pytest
pytest-xdist 测试用例分布式执行,多CPU分发
pytest-ordering 用于改变测试用例的执行顺序
pytest-rerunfailures 用例失败后重跑
pytest-html (管理局成html格式的自动化测试报告)
allure-pytest 用于生成美观的测试报告

放到requirements.txt中,通过pip install -r requirements.txt 一次性安装所有的文件

python pytest框架

python pytest框架

查询是否安装成功 :pytest –version

python pytest框架

四、使用pytest,默认的测试用例的以及基础应用

1.模块名必须以test_ 开头或者 _test结尾
2.测试类必须以Test开头,并且不能有init方法
3.测试方法必须以test开头

python pytest框架

五、pytest测试用例的运行方式

1.主函数模型

(1)运行所有:pytest.main()
(2)指定模块:pytest.main([‘-vs’,’test_login.py’])
(3)指定目录:pytest.main([‘-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_03_zhiliao’])

pytest.main([‘-vs’, ‘–html=./report/report.html’])

2.命令行模式

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

参数详解:
-s:表示输出调试信息,包括 print打印的信息
-v:显示更详细的信息
-vs:这两个参数一起用
-n :支持多线程或者分布式运行测试用例
如:pytest -vs ./testcase/test_login.py -n 2
–reruns NUM :失败用例重跑
-x:表示只要有一个用例报错,那么测试停止

–maxfail=2 出现两个用例失败就停止
-k :根据测试用例的部分字符串指定测试用例
如:pytest -vs ./testcase -k “ao”
–html ./report/report.html :生成html的测试报告

python pytest框架

生成的测试报告:

python pytest框架

3.通过读取pytest.ini配置文件运行

pytest.ini这个文件它是pytest单元测试框架的核心配置文件
1.位置:一般放在项目的根目录
2.编码:必须是ANSI,可以使用notepad++修改编码格式
3.作用:改变pytest默认的行为
4.运行的规则:不管是主函数的模式运行,命令行模式运行,都会去读取这个配置文件。

[pytest]
addopts = -vs #命令行的参数,用空格分隔

addopts = -vs –html ../report/report.html

testpaths = ./testcase #测试用例的路径
python_files = test_.py #模块名的规则
python_classes = Test
#类名的规则
python_functions = test #方法名的规则
markers =
smoke :冒烟用例
usermanage:用户管理模块
Productmanage:商品管理模块

python pytest框架

六、pytest执行测试用例的顺序是怎样的呢?

unittest:ascii的大小来绝定执行的顺序
pytest:默认从上到下
改变默认的执行顺序:使用mark标记
@pytest.mark.run(order=3)

python pytest框架

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

smoke:冒烟用例,分布在各个模块里面
pytest -vs -m “smoke”
pytest -vs -m “smoke or usermanage”

ini配置了vs,输入命令行时,可以不写-vs
pytest -m “smoke”
pytest -m “smoke or usermanage”
pytest -m “smoke or usermanage or productmanage”

python pytest框架

python pytest框架

八、pytest跳过测试用例

(1)无条件跳过
@pytest.mark.skip(reason=”微微太漂亮”)
(2)有条件跳过
@pytest.mark.skipif(age>=18,reason=’已成年’)

python pytest框架

Original: https://blog.csdn.net/lixiaomei0623/article/details/115403575
Author: 你若安好我便天晴
Title: python pytest框架

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/775839/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 猴子补丁

    作用:随时修改代码 (在函数或类定义完成之后,再去修改函数的实现过程) undefined """类似猴子补丁在函数定义好之后,再去更改他的行为&qu…

    Python 2023年10月30日
    040
  • python学习之pandas库入门教程

    numpy库和pandas库是作为python数据处理不可缺少的两个库,大家可能学完numpy之后感觉pandas和numpy大同小异,我个人理解是pandas和numpy都是对数…

    Python 2023年8月24日
    036
  • 利用Python检验用户输入密码的复杂度

    1、创建 python 文件 密码强度检测&am…

    Python 2023年11月2日
    031
  • Django+Vue快速实现博客网站

    Django是一个开放源代码的Web应用框架,由Python写成。采用了MTV的框架模式,即模型M,视图V和模版T。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的…

    Python 2023年8月6日
    038
  • 如何用Pandas读取一个csv文件

    一,csv文件 csv文件是什么?csv文件是一个文件类型。这种文件不像excel,word,ppt……这些文件一样,它们的区别就在于,如果你用MacOs(…

    Python 2023年8月2日
    067
  • Python库-pandas详解

    Python库-pandas详解 1. pandas介绍 2. Series 3. DataFrame * 3.1 DataFrame结构 3.2 DataFrame属性与方法 3…

    Python 2023年8月23日
    093
  • 接口自动化测试python+pytest+request+allure

    pytest使用pytest是基于单元测试框架unittest的升级版本,相比与unittest支持跨多个文件前置,支持丰富的报告,简练的断言,丰富的插件功能,pytest分模块运…

    Python 2023年9月10日
    080
  • 【使用Pandas进行数据重构(合并、聚合与运算)】

    数据重构-使用jupyter 1 数据的合并 * 方式一:使用concat方式 方式二:使用DataFrame自带的join和append方式 方式三:使用Panads的merge…

    Python 2023年8月18日
    066
  • 第2课:解析pygame最小框架中的语法

    插件的安装 若要在vscode中运行python语句,需要保证已经安装jupyter插件, 就可以利用jupyter插件检测代码,运行python代码,应该新建一个 .ipynb类…

    Python 2023年9月19日
    049
  • python 实现超快窗口截图,自动获取当前活动窗口并展示截图

    实现思路是先获取到当前最上面活动的窗口信息,然后提取该窗口的名称信息。 【阅读全文】 之后获取窗口的坐标信息,即左上角的开始坐标及右下角的结束坐标。最后直接截图并将截图的图片进行展…

    Python 2023年11月2日
    061
  • Flask框架配置loguru日志库

    项目场景: loguru日志库是一个很不错的第三方日志库。它即插即用,具备多种方式滚动日志、自动压缩日志文件、定时删除等功能。除此之外,多线程安全、高亮日志、日志告警等功能也不在话…

    Python 2023年8月10日
    067
  • 深入理解 linux磁盘顺序写、随机写

    一、前言 ● 随机写会导致磁头不停地换道,造成效率的极大降低;顺序写磁头几乎不用换道,或者换道的时间很短● 本文来讨论一下两者具体的差别以及相应的内核调用 二、环境准备 组件 版本…

    Python 2023年6月10日
    055
  • python入门 ——类

    文章目录 面向对象编程是最有效的软件编写方法之一。而在面向对象编程中,你编写表示现实世界中的事物和情景的类,并基于这些类来创建对象。根据类来创建对象称为 实例化,这就让你能够使用类…

    Python 2023年9月22日
    061
  • 手把手教你使用LabVIEW人工智能视觉工具包快速实现图像读取与采集(含源码)

    前言 一、工具包位置 二、图像采集与色彩空间转换 1.文件读写 2.实现图片读取 3.使用算子cvtColor实现颜色空间转换 三、从摄像头采集图像 1.Camera类 2.属性节…

    Python 2023年10月25日
    065
  • scrapy-redis(分布式爬虫)

    一、概念 概念:多台机器对一个项目进行分部联合爬取。作用:增加工作单位,提升爬取效率。前提:每一台工作机器都需要scrapy的运行环境。原生的scrapy是不能实现分布式爬虫的,需…

    Python 2023年10月3日
    035
  • 使用flask返回文件并下载

    from flask import Flask,send_from_directory,send_file app = Flask(name) @app.route(‘/file’…

    Python 2023年8月9日
    057
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球