Python自动化测试框架pytest的详解安装与运行

这篇文章主要为大家介绍了Python自动化测试框架pytest的简介以及安装与运行,有需要的朋友可以借鉴参考下希望能够有所帮助,祝大家多多进步

1. pytest的介绍

pytest是一个非常成熟的全功能的python测试工具,它主要有以下特征:

简单灵活,容易上手;

支持简单的单元测试和复杂的功能测试

显示详细的断言失败信息

能自动识别测试模块和测试功能

有测试会话、测试模块、测试类、测试函数级别的fixture

可用于selenium/Appium等自动化测试和接口自动化测试(pytest+requests);

拥有丰富的第三方插件,还可自定义扩展;

可与持续集成工具进行很好的集成,如:Jenkins。

2. pytest的安装

1. 使用以下命令进行安装

1

pip install -U pytest

参数说明:
-U: 将指定的软件包升级至当前最新的可用版本
其他说明:
官网安装说明有加上-U参数,不加上-U参数亦可

2. 检查是否成功安装正确版本

1

2

$ pytest --version

pytest 6.2.4

3. pytest识别测试的条件

1.若无指定参数,pytest会从testpath(如果配置)或当前目录下递归查找与 norecursedirs不匹配的目录。

2.查找目录中所有符合test_*.py*_test.py的文件

3.从匹配到的测试文件中,搜集满足以下条件的测试用例:

  • 在类之外的所有test_*方法
  • Test*类中包含的所有test_*方法(Test*类中不能含有__init__()方法)

4. pytest的运行

pytest的运行分为以下方式:

1. Pycharm中进行调用
2. Python代码中调用
3. 使用命令行进行调用

现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:110685036

4.1 Pycharm中调用

Pycharm中默认的test runner是Unittest,无法识别使用pytest编写的测试文件和测试用例

在这里插入图片描述

在这里插入图片描述

进入Preferences-->Tools-->Python Integrted Tools,

修改Testing下的Default test runner,改成pytest后,

则可以直接使用Pycharm中的Run按钮无参数的调用pytest。

在这里插入图片描述

在这里插入图片描述

4.2 Python代码中调用

在代码中添加入口函数—pytest.main(),即可在Python代码中调用pytest。

pytest.main()的参数:

在这里插入图片描述

1. args:命令行指令列表集

示例代码sample1:

1

2

3

4

5

6

7

8

import pytest

class TestDemo:

    def test_demo1(self):

        print("test_demo1")   

    def test_demo2(self):

        print("test_demo2")

    if  __name__=='__main__':

     pytest.main(['test_sample.py::TestDemo::test_demo1','-v'])

pytest.main(['test_sample.py::test_demo1','-v'])的参数说明:

''test_sample.py::TestDemo::test_demo1'':表示运行test_sample.py中的TestDemo类里面名为test_demo1的测试方式

-v:表示打印详细运行日志信息

运行结果:

在这里插入图片描述

2. plugins:在初始化过程中可自动注册的插件对象列表

示例代码sample2:

1

2

3

4

5

6

7

8

9

10

11

12

13

import pytest

import sys

class TestDemo:

    def test_demo1(self):

        print("test_demo1")

    def test_demo2(self):

        print("test_demo2")

class MyPlugin:

    def pytest_sessionfinish(self):

        print("*** test run reporting finishing")

if __name__ == '__main__':

    sys.exit(pytest.main(['-v','test_sample.py::TestDemo::test_demo1'], plugins=[MyPlugin()]))

pytest.main(['-v','test_sample.py::TestDemo::test_demo1'], plugins=[MyPlugin()])参数说明:

plugins=[MyPlugin()])):传入自定义的MyPlugin()函数

运行结果:

在这里插入图片描述

4.3 使用命令行调用

1. 使用python调用
当代码中我们添加入口函数后,可以使用python来调用pytest。
以sample2的代码为例,在终端输入一下命令:

1

python test_sample.py

运行结果:

在这里插入图片描述

2. 使用pytest调用

常用参数列表

以下列举了一些常用的pytest的执行参数,其他参数可使用pytest --help查看。

参数说明
pytest 目录路径运行指定目录下可收集到的测试,为空则默认执行当前目录下收集到的测试
pytest 文件名.py执行单独一个pytest模块
pytest 文件名.py::类名运行某个模块中的某个类
pytest 文件名.py::类名::方法名运行某个模块中的某个类的某个方法
pytest -v打印详细运行日志信息
pytest -v -s 文件名.py带控制台输出结果,也输出运行详细日志信息
pytest -x 文件名.py一旦运行到报错,就停止运行
pytest -k "类名 and not 方法名"执行某个关键字的用例
pytest -m [标记名]@pytest.mark.[标记名]将运行这个标记的测试用例
pytest –maxfail=[num]当运行错误到达num时候就停止运行
pytest –colection-only只收集测试用例
pytest –junitxml=./result.xml生成执行结果文件
pytest –setup-show回溯fixture的执行过程

参数演示示例:

demo目录如下

在这里插入图片描述

1.pytest目录路径:运行指定目录下可收集到的测试

在这里插入图片描述

2.pytest文件名.py:执行单独一个pytest模块

在这里插入图片描述

3.pytest 文件名.py::类名:运行某个模块中的某个类

在这里插入图片描述

4.pytest 文件名.py::类名::方法名:运行某个模块中的某个类的某个方法

在这里插入图片描述

5.pytest -v: 打印详细运行日志信息

在这里插入图片描述

6.pytest -v -s 文件名.py:带控制台输出结果,也输出运行详细日志信息

在这里插入图片描述

7.pytest -x 文件名.py:一旦运行到报错,就停止运行

在这里插入图片描述

8.pytest -k "类名 and not 方法名":执行某个关键字的用例

注意:示例中,测试用例名称中包含“test_c”和“test_d”的都会被执行

在这里插入图片描述

9.pytest -m [标记名]:@pytest.mark.[标记名]将运行这个标记的测试用例

对两个测试方法进行@pytest.mark.[标记]的标记。

在这里插入图片描述

运行结果:

只运行了被标记的两个测试方法。

在这里插入图片描述

10. pytest --maxfail=[num]:当运行错误到达num时候就停止运行

对代码进行修改,模拟两条运行失败测试用例。

在这里插入图片描述

运行结果:

在这里插入图片描述

11. pytest --colection-only:只收集测试用例

在这里插入图片描述

12. pytest --junitxml=./result.xml:生成执行结果文件

在这里插入图片描述

执行结束后,对应目录下会生成一个结果文件。

在这里插入图片描述

13.pytest --setup-show:回溯fixture的执行过程

对原有代码进行修改。新增一个fixture修饰的函数,并对test_demo1测试方法进行修改。

在这里插入图片描述

运行结果:

在这里插入图片描述

文末说明:
以上内容是我在阅读pytest官方文档后,依照个人理解进行整理。内容可能会有理解错误之处,欢迎大家留言指正。谢谢!

以上就是Python自动化测试框架pytest介绍安装与运行的详细内容,更多关于Python自动化测试框架pytest的资料请关注小编其它相关文章!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/102538.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux C select 的学习

一. select 系统调用 1. 函数说明 #include <sys/select.h> #include <sys/time.h>int select(int nfds, fd_set *readset, fd_set *writeset, fd_set *exceptset,struct timeval *timeout);nfds: 是一个整数值&#xff0c;是指集合中所有文件描述符的范围&#…

日常学习记录随笔-zabix实战

使用zabix结合 实现一套监控报警装置 不管是web开发还是大数据开发 我们的离线项目还是实时项目也好&#xff0c;都需要把我们的应用提交到我们服务器或者容器中去执行 整个应用过程中怎么保证线上整体环境的稳定运行 监控很重要 现在比较主流的就是 普罗米修斯以及zabix 我要做…

Docker-harbor私有仓库部署与管理

搭建本地私有仓库 #首先下载 registry 镜像 docker pull registry #在 daemon.json 文件中添加私有镜像仓库地址 vim /etc/docker/daemon.json { "insecure-registries": ["20.0.0.50:5000"], #添加&#xff0c;注意用逗号结…

Apache Solr9.3 快速上手

Apache Solr 简介 Solr是Apache的顶级开源项目&#xff0c;使用java开发 &#xff0c;基于Lucene的全文检索服务器。 Solr比Lucene提供了更多的查询语句&#xff0c;而且它可扩展、可配置&#xff0c;同时它对Lucene的性能进行了优化。 安装 下载 : 下载地址解压 : tar -zxv…

Unity可视化Shader工具ASE介绍——6、通过例子说明ASE节点的连接方式

大家好&#xff0c;我是阿赵。继续介绍Unity可视化Shader编辑插件ASE的用法。上一篇已经介绍了很多ASE常用的节点。这一篇通过几个小例子&#xff0c;来看看这些节点是怎样连接使用的。   这篇的内容可能会比较长&#xff0c;最终是做了一个遮挡X光的效果&#xff0c;不过把这…

Docker部署gitlab_ce(避坑版---社区版)

1 下载docker 2 下载gitlab镜像 3 运行 4 进入容器内部修改 5 在浏览器里访问 6 修改root密码&#xff08;如果忘记请修改&#xff09; 1 下载docker # 安装依赖 yum install -y yum-utils device-mapper-persistent-data lvm2# 设置yum源 yum-config-manager --add-repo https…

语义分割笔记(三):通过opencv对mask图片来画分割对象的外接椭圆

文章目录 mask图像介绍步骤代码 mask图像介绍 根据 mask 图像来画分割对象的外接椭圆是一种常见的图像分割任务。Mask 图像通常是一个二值图像&#xff0c;其中包含了感兴趣对象的像素。通常情况下&#xff0c;白色像素表示对象&#xff0c;黑色像素表示背景。 步骤 以下是一…

Linux和UNIX的关系及区别

UNIX 与 Linux 之间的关系是一个很有意思的话题。在目前主流的服务器端操作系统中&#xff0c;UNIX 诞生于 20 世纪 60 年代末&#xff0c;Windows 诞生于 20 世纪 80 年代中期&#xff0c;Linux 诞生于 20 世纪 90 年代初&#xff0c;可以说 UNIX 是操作系统中的"老大哥&…

Python利用jieba分词提取字符串中的省市区(字符串无规则)

目录 背景库&#xff08;jieba&#xff09;代码拓展结尾 背景 今天的需求就是在一串字符串中提取包含&#xff0c;省、市、区&#xff0c;该字符串不是一个正常的地址;,如下字符串 "安徽省、浙江省、江苏省、上海市,冷运标快首重1kg价格xx元,1.01kg(含)-5kg(不含)续重价…

【web实现右侧弹窗】JS+CSS如何实现右侧缓慢弹窗动态效果『附完整源码下载』

文章目录 写在前面涉及知识点页面效果1、页面DOM创建1.1创建底层操作dom节点1.2 创建存放弹窗dom节点 2、页面联动功能实现&#xff08;关闭与弹出&#xff09;2.1 点击非右侧区域实现关闭2.2 点击叉叉及关闭按钮实现关闭功能 3、完整源码包下载3.1百度网盘3.2 123云盘3.3邮箱留…

按键中断小灯蜂鸣器风扇

按键1实现小灯亮灭&#xff0c;按键2实现蜂鸣器&#xff0c;安静3实现风扇 src/key_it.c #include"key_it.h"void key3_it_config() {//RCC使能GPIOF时钟RCC->MP_AHB4ENSETR | (0x1<<5);GPIOF->MODER & (~(0x3<<16));EXTI->EXTICR3 &…

基于若依ruoyi-nbcio支持flowable流程增加自定义业务表单(二)

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a;RuoYi-Nbcio后台管理系统 之前讲了自定义业务表单&#xff0c;现在讲如何与流程进行关联 1、后端部分 WfCustomFormMapper.xml &…

Flink-SQL join 优化 -- MiniBatch + local-global

背景 问题1. 近期在开发flink-sql期间&#xff0c;发现数据在启动后&#xff0c;任务总是进行重试&#xff0c;运行一段时间后&#xff0c;container heartbeat timeout&#xff0c;内存溢出(GC overhead limit exceede) &#xff0c;作业无法进行正常工作 023-10-07 14:53:3…

Commonjs与ES Module

commonjs 1 commonjs 实现原理 commonjs每个模块文件上存在 module&#xff0c;exports&#xff0c;require三个变量,然而这三个变量是没有被定义的&#xff0c;但是我们可以在 Commonjs 规范下每一个 js 模块上直接使用它们。在 nodejs 中还存在 __filename 和 __dirname 变…

Kaadas凯迪仕助力亚运盛会,尽展品牌硬核科技与智能锁行业风采

9月23日至10月8日&#xff0c;亚洲最大规模体育赛事亚运会在杭州举办。作为国际性体育赛事&#xff0c;除赛中的各类竞赛项目外&#xff0c;杭州亚运会前后相关活动也吸引了大众目光的聚焦。 Kaadas凯迪仕智能锁作为此次杭州亚运会官方指定智能门锁&#xff0c;以#凯迪仕守护每…

【Mybatis】基于Mybatis插件+注解,实现敏感数据自动加解密

一、介绍 业务场景中经常会遇到诸如用户手机号&#xff0c;身份证号&#xff0c;银行卡号&#xff0c;邮箱&#xff0c;地址&#xff0c;密码等等信息&#xff0c;属于敏感信息&#xff0c;需要保存在数据库中。而很多公司会会要求对数据库中的此类数据进行加密存储。 敏感数据…

什么是大数据,大数据简介

大数据的概念通俗的说法 大数据&#xff0c;按照我的理解比较通俗易懂的是在数据量很多很大的情况下数据处理速度需要足够快&#xff0c;用我们以前传统意义上的的技术比如关系型数据库mysql没办法处理或者处理起来非常复杂&#xff0c;必须有一些新的处理技术也就是大数据处理…

深入理解强化学习——序列决策(Sequential Decision Making)

分类目录&#xff1a;《深入理解联邦学习》总目录 在本文中我们将介绍序列决策&#xff08;Sequential Decision Making&#xff09;过程中的各个过程。 智能体与环境 强化学习研究的问题是智能体与环境交互的问题&#xff0c;下图左边的智能体一直在与下图右边的环境进行交互…

微信小程序 movable-view 控制长按才触发拖动 轻轻滑动页面正常滚动效果

今天写 movable-areamovable-view遇到了个头疼的问题 那就是 movable-view 监听了用户拖拽自己 但 我们小程序 上下滚动页面靠的也是拖拽 也就是说 如果放在这里 用户拖动 movable-view部分 就会永远触发不了滚动 那么 我们先可以 加一个 bindlongpress"longpressHandler…

扫描器(xray和bp联动)

文章目录 分类主动扫描和被动扫描bp与xray联动 分类 扫描器分为对web的扫描器和对主机的扫描器 主动扫描和被动扫描 主动扫描&#xff1a; 输入某个URL&#xff0c;然后由扫描器中的爬虫模块爬取所有链接&#xff0c;对GET、POST等请求进行参数变形和污染&#xff0c;进行重放测…