pytest

2023-11-05

一、pytest是单元测试框架

单元测试:对软件开发中,对软件的最小单位(函数、方法)进行正确性检查测试。

java框架:jnuit和testing。

python框架:unittest和pytest。

流程:i:测试发现:从多个文件中找到测试用例。

ii:测试执行:按照一定顺序和规则去执行并生成结果。

iii:测试判断:通过断言判断预期结果和实际结果的差异。

iV:测试报告:统计测试进度,耗时、通过率,生成测试报告。

二、单元测试框架和自动化测试框架的关系

自动化测试框架:

  • 提高测试效率,降低维护成本。
  • 减少人工的干预提高测试的准确性,增加代码的重用性。
  • 核心思想让不懂代码的人也能实现自动化测试。

单元测试框架只是自动化测试框架的组成部分之一。

三、pytest简介

python成熟的单元测试框架,更灵活。

可以和selenlum,request,applum结合实现web、接口、app自动化。

可以实现测试用例的跳过和失败用例重试。

pytest可以和allure生成美观的测试报告。

pytest可以和jenkins持续集成。

pytest有很多强大的插件:pytest-html(生成html格式的自动化测试报告)

pytest-xdlst(测试用例分布式执行,多CPU分发)

pytest-ordering(改变测试用例的执行顺序)

pytest-returnfailures(用例失败重跑)

allure-pytest(生成美观的测试报告)。

插件批量下载:创建requirement.txt,将插件的名称下上,然后执行pip install -r requirement.txt即可。

四、使用pytest

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

执行测试用例方式一:

  • 运行所有:pytest
  • 指定模块:pytest -vs test_login.py
  • 指定目录: pytest -vs ./interface_testcase

-s 表示输出调试信息,包括print打印信息。

-v 表示输出详细信息

-vs 表示v和s一起使用

-n 表示多线程使用:pytest -vs ./testcase/test_login.py -n 2

执行测试用例方式二:

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

pytest.ini文件是pytest的单元测试框架的配置文件。

五、分组执行(冒烟、分模块执行)

在测试用例文件中添加pytest.mark.xxx标记用例属于什么

pytest.mark.run(order=2) 通过设置不同的order设置用例执行顺序

pytest.mark.skip(reason="xxx") 跳过测试用例,原因xxx

pytest.mark.smoke 设置该用例是smoke类型的

在全局配置文件pytest.ini添加上不同的分组

执行pytest -m "smoke" #这样-m表示分组,就是执行通过smoke标记的用例。

在pytest.ini 文件的addopts参数追加参数生成报告

--html ./report/report.html 在report目录下生成report.html的测试报告

六、setup/teardown,setup_class/teardown_class

setup是每个测试用例之前的初始化代码,每个测试用例执行之前都会调用

teardown是每个测试用例之后的扫尾代码,每个测试用例执行之后都会调用

setup_class是每个类执行之前的初始化工作,只会执行一次

teardown_class是每个类执行之后的扫尾工作,只会执行一次

可以通过@pytest.fixture 来实现部分用例的前后置函数调用。

七、结合allure生成报告

1、下载,解压配置path路径

https://github.com/allure-framework/allure2/release

path路径: 找到bin文件路径,如:E:\allure-2.13.7\bin 配置到path中

验证:allure --version。如果dos可以验证但是pycharm验证失败,重启pycharm

2、加入命令生成json格式的临时报告

--alluredir /temp

3、生成allure报告

在all.py的main函数之后添加

os system('allure generate /temp -o ./report --clean')

八、接口测试Request库

用来发送http请求以及响应的python的第三方库,主要用于接口自动化。

//安装
 pip install requests

//常用方法
request.get()
request.post() //data和json传参,区别在于请求头的Content-Type来区别

request.put()
request.delete()

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

pytest 的相关文章

随机推荐

  • 阿白数模笔记之遗传算法(genetic algorithm)MATLAB代码详解

    目录 Preface 一 极值问题Extremum problem 1 参数初始化 Parameter initialization 2 解码 decode 3 轮盘赌 选择淘汰Roulette choose to eliminate 4
  • 多维时序

    多维时序 Matlab实现BiLSTM Adaboost和BiLSTM多变量时间序列预测对比 目录 多维时序 Matlab实现BiLSTM Adaboost和BiLSTM多变量时间序列预测对比 预测效果 基本介绍 模型描述 程序设计 参考资
  • numpy的loadtxt遇到问题:ValueError: Wrong number of columns at line 2 原因调查

    在使用python做验证码识别的过程中 在调用numpy的loadtxt函数时发生如下错误 Traceback most recent call last File D My Documents test jpg ok py line 36
  • 【Docker】Docker使用之容器技术发展史

    博客主页 博主链接 本文由 M malloc 原创 首发于 CSDN 学习专栏推荐 LeetCode刷题集 欢迎点赞 收藏 留言 如有错误敬请指正 未来很长 值得我们全力奔赴更美好的生活 文章目录 本章详情 Jail时代 1979 年 贝尔
  • 华为OD机试题:消除相邻且相同

    题目描述 输入一个只包含英文字母的字符串 字符串中的俩个字母如果相邻且相同 就可以消除 在字符串上反复执行消除的动作 直到无法继续消除为止 此时游戏结束 输出最终得到的字符串长度 输入描述 原始字符串只能包含大小写英文字母 字母的大小写敏感
  • 禁止系统运行某个进程的简单方法(注册表操作)

    一 解决方法 修改注册表 HKLM SOFTWARE Microsoft Windows NT CurrentVersion Image File Execution Options 下建立一个以要禁用的程序名命名的子项 如 hudan e
  • python爬虫修饰_python爬虫URL重试机制的实现方法(python2.7以及python3.5)

    应用场景 状态不是200的URL重试多次 代码比较简单还有部分注释 python2 7实现 coding utf 8 ayou import requests def url retry url num retries 3 print ac
  • 生活中那些六 “有” 的人

    1 有承诺 一些事情开始的时候总会有些协议与约定 我们称其为承诺 我们必须遵守承诺 即使是约会也要遵守 也不能迟到 迟到这件事不但会妨碍我们所有人 还意味着迟到者不尊重大家的时间 这种约定从某种意义上来讲也是承诺 如果你来晚了 这就表示你的
  • 蓝桥杯考生规则

    2017年模拟赛 本科组 考生须知 l 考试开始后 选手首先下载题目 并使用考场现场公布的解压密码解压试题 l 考试时间为4小时 时间截止后 提交答案无效 l 在考试强制结束前 选手可以主动结束考试 需要身份验证 结束考试后将无法继续提交或
  • java计算机毕业设计火车订票系统源码+mysql数据库+系统+lw文档+部署

    java计算机毕业设计火车订票系统源码 mysql数据库 系统 lw文档 部署 java计算机毕业设计火车订票系统源码 mysql数据库 系统 lw文档 部署 本源码技术栈 项目架构 B S架构 开发语言 Java语言 开发软件 idea
  • Tomcat调优

    问题定位 对于Tomcat的处理耗时较长的问题主要有当时的并发量 session数 内存及内存的回收等几个方面造成的 出现问题之后就要进行分析了 1 关于Tomcat的session数目 这个可以直接从Tomcat的web管理界面去查看即可
  • Go语言学习13-类型转换

    类型转换 引言 类型转换 1 概念 2 数值类型之间的转换 3 与string类型相关的转换 4 别名类型值之间的转换 结语 引言 在上一篇博文中 我们介绍了 Go 语言的 数据的使用 本篇博文 我们将介绍 Go 语言的类型转换 类型转换
  • HTTP头的Expires与Cache-control

    1 概念 Cache control用于控制HTTP缓存 在HTTP 1 0中可能部分没实现 仅仅实现了Pragma no cache 数据包中的格式 Cache Control cache directive cache directiv
  • 程序员的十个等级

    转载自 http blog csdn net fx0000001 article details 50397265 如果你还迷茫请看这里 如果你很牛逼请看这里 如果你很自傲请看这里 总有你想学会的 自西方文艺复兴以来 中国在自然科学方面落后
  • 不带头结点的单链表

    建立结构体 和带头结点但单链表一样 按需建立即可 我以建立一个储存学生信息的链表举例 typedef struct node char name 20 int number struct node next Node LinkList 单链
  • 探索全桥电机驱动模块:实现精确控制与高效驱动

    全桥电机驱动模块是一种在现代工程应用中广泛使用的电机驱动方式 对于需要精确控制和高效驱动的场景 如机器人 无人机 电动车等 全桥电机驱动模块提供了理想的解决方案 本文将介绍全桥电机驱动模块的原理和实际应用场景 并对几种常见的全桥驱动芯片进行
  • csdn的Markdown行首缩进的两种方法,非常全

    csdn的行首缩进 鉴于不同编辑器的Markdown语法略微不同 故缩进也略不同 1 特殊占位符 不缩进 行首缩进 nbsp 行首缩进 160 四分之一中文占位符 行首缩进 8197 四分之一中文占位符 行首缩进 ensp 行首缩进 819
  • Spring中Bean的生命周期

    Spring Bean的生命周期是从Bean 实例化之后 即通过反射创建出对象之后 到Bean成为一个完整对象 最终存储到单例池中 这个过程被称为Spring Bean的生命周期 Spring Bean的生命周期大体上分为四个阶段 实例化
  • vue2.0项目调用多个IP接口

    项目中经常遇到跨域问题 最简单的方式就在本地配置代理 可偶尔遇到一个页面里面需要调用来自两个以上不同IP段的接口 多个IP要怎么配置代理呢 请往下看 在项目目录 config index js文件配置代理 module exports de
  • pytest

    一 pytest是单元测试框架 单元测试 对软件开发中 对软件的最小单位 函数 方法 进行正确性检查测试 java框架 jnuit和testing python框架 unittest和pytest 流程 i 测试发现 从多个文件中找到测试用