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,一经查实,立即删除!

相关文章

读书笔记—《如何阅读一本书》

读书笔记—《如何阅读一本书》 一、阅读的层次1、主动阅读的基础一个阅读者要提出的四个基本问题 2、基础阅读(第一层)3、检视阅读(第二层)4、分析阅读(第三层) 二、阅读不同读物的方法三、阅读的最终目标1…

AF_UNIX和127.0.0.1(AF_INET)回环地址写数据速度对比(二)

之前写了篇博客:AF_UNIX和127.0.0.1(AF_INET)回环地址写数据速度对比 然后利用的是发送端读取大文件,接收方接收并保存为文件的方式进行测试,结果发现,AF_UNIX并未比127.0.0.1(AF_INET)回环地址优秀,若单次发送的字节数…

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…

day04-前台首页、导出项目依赖

1 前台首页 1.1 Header.vue 1.2 Footer.vue 1.3 Banner.vue 1.4 HomeView.vue 1.5 轮播图接口打通 2 导出项目依赖 3 抽取返回格式 1 前台首页 -在项目的components文件夹下&#xff1a; 新建&#xff1a;Header.vueFooter.vueBanner.vue1.1 Header.vue <template>&…

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…

【动手学深度学习-Pytorch版】BERT预测系列——用于预测的BERT数据集

本小节的主要任务即是将wiki数据集转成BERT输入序列&#xff0c;具体的任务包括&#xff1a; 读取wiki数据集生成下一句预测任务的数据—>主要用于_get_nsp_data_from_paragraph函数从输入paragraph生成用于下一句预测的训练样本&#xff1a;_get_nsp_data_from_paragraph生…

css常见问题处理

文章目录 1&#xff1a;禁止文字被复制粘贴1.1 Css 处理1.2 Js 处理 2&#xff1a;元素垂直水平居中2.1:方案一2.2 方案二2.3 方案三2.4 方案四2.5 方案五 1&#xff1a;禁止文字被复制粘贴 1.1 Css 处理 <div class"text">我不可以复制信息</div> <…

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

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

CCAK—云审计知识证书学习

目录 一、CCAK云审计知识证书概述 二、云治理概述 三、云信任 四、构建云合规计划 <

js中 slice 用法用法全解析

slice 工作原理 在深入研究一些更高级的用法之前&#xff0c;让我们看一下 slice 方法的基础知识。如MDN文档&#xff0c; slice 是数组上的一个方法&#xff0c;它最多有两个参数: arr.slice([begin[, end]]) begin 从该索引处开始提取原数组中的元素,如果该参数为负数&am…

Linux和UNIX的关系及区别

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

Web 前端汇总

一、前端技术框架 1、Vue.js 官网&#xff1a;https://cn.vuejs.org/ Vue CLI&#xff1a;https://cli.vuejs.org/ 菜鸟教程&#xff1a;http://www.runoob.com/w3cnote… Nuxt.js&#xff1a;https://zh.nuxtjs.org/ 桌面应用Electron&#xff1a;https://electronjs.org/ 2、…

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 &…