pytest自动化测试框架基础篇

news2024/11/18 11:24:04

目录

前言:

一、单元测试框架

二、pytest简介以及常用插件安装

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

四、pytest跳过测试用例

五、pytest测试用例的前后置,固件


前言:

pytest是一个基于Python语言的自动化测试框架,它可以帮助测试人员更加高效地管理和执行测试用例,并提供了丰富的插件和扩展功能。

使用pytest可以使我们更加轻松地编写测试脚本,自动化执行测试,快速完成测试工作,并且pytest支持使用各种主流的Python测试库(如unittest)编写的测试代码,使得我们可以平滑地从使用其他测试框架过渡到使用pytest。

一、单元测试框架

1.什么是单元测试框架

单元测试框架是在自动化测试或者白盒测试中对软件的最小单元(函数,方法)进行测试的框架。

2.单元测试框架分类

python:unittest、pytest

3.单元测试框架主要做什么?

发现测试用例

执行测试用例

判断测试结果

生成测试报告

二、pytest简介以及常用插件安装

1、pytest是一个非常成熟的单元测试框架,灵活和简单。

2、它可以结合selenium、request、appium完成各种不同的自动化。

3、它还可以生成自定义allure报告以及Jenkins持续集成。

4、pytest还有很多强大的插件:

pytest

pytest-html(生成html报告的插件)

pytest-xdist(多线程运行的插件)

pytest-ordering(改变用例的执行顺序的插件)

pytest-rerunfailures(失败用例重新执行的插件)

allure-pytest(生成美观的自定义的allure报告)

通过在项目的根目录下新建一个:requirements.txt文件保持插件。然后通过以下命令安装:

pip install -r requirements.txt

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

1、模块名必须以test_或者_test结尾。

2、测试类必须以Test开头,并且不能带有init方法。

3、测试用例必须以test_开头。

执行:Alt+enter自动导包

1.通过命令方式执行

pytest

执行的参数:

-vs        -v输出详细信息。 -s输出调试信息。如 :pytest -vs

-n          多线程运行。(提前安装插件:pytest-xdist)如:pytest -vs -n=2

-reruns num   失败重跑 (提前安装插件:pytest-rerunfailres)如:pytest -vs -reruns=2

                        raise Exception()抛出异常

                        try except                解决异常

-x                出现一个用例失败则停止测试。如:pytest -vs -x

--maxfail        出现几个用例失败才停止,如:pytest -vs --maxfail=2

--html        生成html的测试报告(提前安装插件:pytest-html)如:pytest -vs --html/.reports/result.html

-k                运行测试用例名称中包含某个字符串的测试用例。如:pytest -vs -k "demo1"

-m "smoke"        只执行冒烟用例                如:pytest -vs -m "smoke"               

2.通过主函数main方式执行。

if __name__ == '__main__':
    pytest.main(["-vs"])

3.通过全局配置文件pytest.ini文件执行。

注意:

一般放在项目的根目录下,名称必须是pytest.ini

编码格式为ANSI,当有中文时可能需要改变编码格式为GB2312

pytest.ini文件可以改变默认的测试用例规则

不管是命令行运行还是主函数运行,都会加载这个配置文件

[pytest]
# 参数
# 具体传参
addopts = -vs   
# 执行的测试用例的路径
testpaths = ./testcase
# 执行的模块
python_files = test_*.py
# 执行的类
python_classes = Test*
# 执行的函数
python_functions = test_*
# 测试用例分组执行进行标记
markers =
    smoke : 冒烟用例
    authority_manage : 权限管理
    menu_manage : 菜单管理

四、pytest跳过测试用例

(1)无条件跳过

@pytest.mark.skip(reason="无理由跳过")

(2)有条件跳过

@pytest.mark.skipif(time_age<10, reason="年龄小于10跳过")

五、pytest测试用例的前后置,固件

class CommonUtil:
 
    def setup_class(self):
        print("每个类之前执行一次")
 
    def teardown_class(self):
        print("每个类之后执行一次")
 
    def setup(self):
        print("每个用例之前执行一次")
 
    def teardown(self):
        print("每个用例之后执行一次")

用例demo:

import pytest
import time
 
from common.common_util import CommonUtil
 
class TestCeshi(CommonUtil):
    time_age = 8
 
    @pytest.mark.smoke
    def test_demo1(self):
        print("测试第一条用例")
        raise Exception("这条用例挂了")
 
    def test_demo2(self):
        print("测试第二条用例")
 
    @pytest.mark.skip(reason="无理由跳过")
    def test_demo3(self):
        print("测试第三条用例")
 
    @pytest.mark.skipif(time_age < 10, reason="年龄小于10跳过")
    def test_demo4(self):
        print("测试第四条用例")
        
    def test_demo5(self):
        print("测试第五条用例")

 

作为一位过来人也是希望大家少走一些弯路,希望能对你带来帮助。(WEB自动化测试、app自动化测试、接口自动化测试、持续集成、自动化测试开发、大厂面试真题、简历模板等等),相信能使你更好的进步!

留【自动化测试】即可【自动化测试交流】:574737577(备注ccc)icon-default.png?t=N4P3http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=2szVdJcy6VnqVi_zYhQd8aI9U5yfUv34&authKey=leQfP2SBsSV1%2FUzpd2OtJhdk%2F0SH%2FzEdi8uCVyM4q8w%2FHQEA1WUh3aqS9kyXZxUH&noverify=0&group_code=574737577

 

 

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

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

相关文章

声网云市场 —— 实时互动开发者的 API 商店

声网云市场是面向实时互动开发者的 API 商店&#xff0c;让开发者在使用声网 RTC 的同时&#xff0c;可以快速集成实时互动扩展能力&#xff0c;比如美颜、变声、语音转文字、实时翻译、视频审核、语音审核等等&#xff0c;让开发者专注在业务逻辑和用户体验上&#xff0c;免去…

ESXi 7.0 U3m Lenovo (联想) 定制版 OEM Custom Installer CD

VMware ESXi 7.0 Update 3m - 领先的裸机 Hypervisor (All OEM Customized Installer CDs) ESXi 7.0 U3m Standard (标准版) ESXi 7.0 U3m Dell (戴尔) 定制版 OEM Custom Installer CD ESXi 7.0 U3m HPE (慧与) 定制版 OEM Custom Installer CD ESXi 7.0 U3m Lenovo (联想) 定…

RTX3070安装spconv1.1

系统环境&#xff1a; torch:1.8.1 cuda:11.1 cudnn:8.0.5 cpu:RTX3070 gcc:7.5.0&#xff08;g 7.5.0&#xff0c;c14需要g5.2以上&#xff09; cmake:3.18.3&#xff08;3.13.2及以上&#xff09; 第一步环境配置 在开始安装前&#xff0c;需要确保已经安装cuda和cudnn。 …

微软 AI 华人先驱黄学东正式宣布离职,将加入 Zoom 担任 CTO

微软华人 AI 版图上一块不可或缺的拼图&#xff0c;现在也离开了。 雷峰网独家获悉&#xff0c;微软 AI 华人先驱黄学东在社交媒体正式宣布从微软离职&#xff0c;将加入 Zoom 担任 CTO。 上世纪六十年代出生的黄学东是与变化共生、在变化中成长的一代人。 1962年&#xff0c…

树和二叉树的基本概念和性质

树和二叉树的基本概念和性质 文章目录 树和二叉树的基本概念和性质树重要概念树和非树是树的必要条件 二叉树二叉树的特点满二叉树与完全二叉树二叉树的性质 二叉树存储形式链式存储二叉链三叉链 顺序存储 树 重要概念 树是递归定义的 节点的度&#xff1a;一个节点含有子树的…

k8s kube-proxy详解

一、kube-proxy简介 kube-proxy是kubernetes中网络核心组件&#xff0c;实现了服务暴露和转发等网络功能。kube-proxy支持userspace&#xff0c;ipvs和iptables三种代理模式。userspace性能问题较严重&#xff0c;基本不再使用&#xff0c;应用最多的是iptables和ipvs模式。 …

关于c++ extern关键字

解释和说明参考&#xff1a; (227条消息) C extern关键字_Candyerer的博客-CSDN博客 (227条消息) 对于C中的extern关键字用法的理解_c extern_Fanfan21ya的博客-CSDN博客 个人写了一个案例&#xff0c;代码结构如下 在总结一下 1.a.cpp文件需要引用b.cpp的文件中的变量或…

一文详解!嵌入式软件的自动化测试框架、测试流程与功能研究分析

目录 引言 1.嵌入式软件自动化测试平台分析 2.嵌入式软件自动化测试平台概要设计 3.嵌入式软件自动化测试平台详细设计 3.3 功能设计 引言 嵌入式软件是指被设计用于嵌入或控制另一个产品、设备或系统的软件。它在各种应用领域&#xff08;例如消费电子、工业控制、医疗设…

steam搬砖全套操作流程之如何卖货(第③课)

上一篇文章阿阳分享了Steam项目如何选品&#xff0c;今天就给大家说说装备如何发货等重要事项。 本节课主要为大家讲解&#xff1a;定价规则&#xff0c;加价原则&#xff0c;认识装备磨损度和印花&#xff0c;自动发货软件和自动上架软件的讲解。 &#xff08;Steam装备选品…

ESXi 7.0 U3m Inspur (浪潮) 定制版 OEM Custom Installer CD

VMware ESXi 7.0 Update 3m - 领先的裸机 Hypervisor (All OEM Customized Installer CDs) ESXi 7.0 U3m Standard (标准版) ESXi 7.0 U3m Dell (戴尔) 定制版 OEM Custom Installer CD ESXi 7.0 U3m HPE (慧与) 定制版 OEM Custom Installer CD ESXi 7.0 U3m Lenovo (联想) 定…

在linux系统上运行Stable Diffusion web UI

stable-diffusion-webui项目地址 该项目是一个针对Stable Diffusion模型的浏览器操作界面&#xff0c;基于Gradio。 环境&#xff1a; 在恒源云上租的服务器&#xff0c;操作系统&#xff1a;Ubuntu、显卡&#xff1a;A4000-16G。恒源云官网链接 项目的Readme.md让我们用web…

科二学习笔记

文章目录 一、侧方位停车进库&#xff1a;出库&#xff1a; 二、倒车入库右入库与右出库出库部分&#xff1a;入库部分第一种方法(网络版本)&#xff1a;入库部分第二种方法&#xff1a; 左入库与左出库左出库左入库 三、直角转弯(右直角) 练车时间 am 7 ~ 11 pm15 ~ 18 一、侧…

中国做SaaS为什么这么难?这里解释了深层次的原因!

01 SaaS是什么&#xff1f; SaaS就是共享单车 SaaS&#xff0c;翻译过来是“软件即服务”。在大家的认知中&#xff0c;软件属于“产品”&#xff0c;SaaS也确实是一种产品&#xff0c;那为什么几乎所有的SaaS厂商却都在强调“服务”这个概念呢&#xff1f; 产品VS服务&…

JavaWeb笔记(三)

Java与数据库 通过Java如何去使用数据库来帮助我们存储数据呢&#xff0c;这将是本章节讨论的重点。 初识JDBC JDBC是什么&#xff1f;JDBC英文名为&#xff1a;Java Data Base Connectivity(Java数据库连接)&#xff0c;官方解释它是Java编程语言和广泛的数据库之间独立于数…

Pod 生命周期

目录 1&#xff0c;概述 Pod Phase阶段 2&#xff0c;创建和终止 pod的创建过程 pod的终止过程 3 Init容器 容器探针 容器回调 1&#xff0c;概述 我们一般将pod对象从创建至终止的这段时间范围内称为pod生命周期&#xff0c;它主要包含下面过程&#xff1a; 1.pod创建过…

信捷PLC使用串口485与超声波传感器通讯实例

使用信捷的XL3-32PLC,XL3支持串口通讯。用来与国产超声波检测传感器进行通讯。 首先是硬件接线: 将传感器的485口A、B与PLC的485口A、B分别连接好。 接线完成后,可以在电脑端先使用串口调试助手测试一下,数据的发送与接受是否正常。 另外,PLC的串口数据发送与接收,…

selenium基础定位元素入门

参考文章链接 什么是selenium&#xff1f; selenium是一个web自动化测试工具selenium环境部署安装 首先需要安装python环境 1、安装在cmd 直接输入 &#xff1a;pip install selenium2、卸载&#xff1a;在cmd输入&#xff1a;pip uninstall selenium3、查看&#xff1a;pip…

直播产品行业解决方案|商业化变现模型

摘要 在过去几年的直播行业创业风口期中&#xff0c;直播的用户关注度疯狂增长&#xff0c;但用户质量却参差不齐。随着用户新鲜感一过&#xff0c;流失率变得相当严重&#xff0c;各大平台都在竭尽全力防御。然而&#xff0c;留住“凑热闹”的非直播受众用户并不是最关键的问…

python高级-线程和进程相关

这里前面的linux基础就不补充了&#xff0c;只写一些比较高级的 目录 一、文件查找 1.按照名字查找 2.通配符 3.文件大小查找 二、压缩和打包 1.zip 2.gzip 3.tar命令 三、权限管理 四、多进程 1.创建进程 2.获取进程id 3.进程传参 4.进程不共享全局变量 5.守护…

系统重构实施,百亿级核心交易如何保证准确性?

重构&#xff1a;又喜欢又害怕 一个企业级的应用&#xff0c;即使是诸葛亮级别的设计人员&#xff0c;最初的考虑都不可能尽善尽美&#xff0c;会存在设计不够或者设计过头的情况。加上业务的发展可能与当初的推想不一致&#xff0c;这样就使得上线初期稳稳当当的一个系统&…