吐血整理,自动化测试pytest测试框架,资深测试带你少走弯路......

news2025/7/22 20:25:53

目录:导读

    • 前言
    • 一、Python编程入门到精通
    • 二、接口自动化项目实战
    • 三、Web自动化项目实战
    • 四、App自动化项目实战
    • 五、一线大厂简历
    • 六、测试开发DevOps体系
    • 七、常用自动化测试工具
    • 八、JMeter性能测试
    • 九、总结(尾部小惊喜)


前言

Pytest框架详解

pytest是一个非常成熟的全功能的Python测试框架,主要有一下几个特点:

Pytest自动化框架:https://www.bilibili.com/video/BV18K411m7FH/

简单灵活,容易上手,支持参数化;
能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium、appium等自动化测试,requests+pytest接口自动化测试;
pytest具有很多第三方插件,并且可以自定义扩展,比较好用的如:

  • pytest-selenium(集成selenium)
  • pytest-html(完美html测试报告生成)
  • pytest-rerunfailures(失败用例重复执行)
  • pytest-xdist(多CPU分发)

测试用例的skip和xfail处理;
可以很好的和jenkins集成;
pytest也支持allure测试报告;
能兼容unittest,是unittest的扩展;

Pytest以及常用插件安装

把如下内容写到一个txt文件中,如require-install.txt
pytest
pytest-html
pytest-xdist
pytest-rerunfailures
然后在Dos窗口中使用此命令安装所有的模块:pip install -r require-install.txt

通过命令:pytest –version验证安装结果。

问题:
下面说两个错误例子,一个是win7、python3.7.4以及pytest5.0+,将python降到3.7.3就ok了,另一个是Windows 10, python 3.8.1, pytest 5.3.3,将pytest降到4.6.9以下版本也ok,因此建议你要么降python版本,要么降pytest版本试试。

pytest框架基础应用

pytest运行函数时和运行类里面的方法情况如下:

import pytest

def test01():
	print('测试用例一')

def abcd():
	print('测试用例二'')

class TestCase:

	def test_03(self):
		print('测试用例三')

	def defg(self):
		print('测试用例四')

if __name__ == ‘__main__’:

pytest.main(['-s','pytest-demo.py'])

注意事项:
(1) 测试函数、类中的测试方法都必须以test_ 开头,当然以什么开头在pytest可自定义。
(2) 测试类必须以Test开头,并且不能带有init方法
(3) 断言必须使用assert断言

执行方式:
(1) 主函数方式运行:
指定运行文件:pytest.main([’-s’,‘pytest-demo.py模块名’])

注意:如果py文件是以test_开头或者以_test结尾则可以使用pytest.main()运行。因为pytest.main()会运行当前目录下所有以test_开头或者以_test结尾的文件。=

(2) 命令行方式运行
点开Pycharm左下角的:Terminal打开当面目录下的命令行窗口。
输入命令执行:pytest pytest-demo.py模块名

注意:如果py文件是以test_开头或者以_test结尾则可以使用pytest命令运行,因为pytest会运行当前目录下所有以test_开头或者以_test结尾的文件。

运行时参数说明

-s:显示打印内容
如:pytest pytest-demo.py -s
等价于:pytest.main([’-s’,‘pytest-demo.py’])

:::指定测试用例运行
运行函数:如:pytest pytest-demo.py::test_01
等价于:pytest.main([’-s’,‘pytest-demo.py::test01’])

运行类中方法:如:pytest pytest-demp.py::TestCase::test_03
等价于:pytest.main([’-s’, ‘pytest-demo.py::TestCase::test_03’])

–html=路径/report.html:生成xml/html格式测试报告(需要先安装pytest-html)
如:pytest pytest-demp.py –html-./report.html
等价于:pytest.main([’-s’,‘pytest-demo.py’,’–html=./report.html’])

–maxfail=1:出现1个失败就终止测试
如:pytest pytest-demo.py –maxfail=1
等价于:pytest.main([’-s’,‘pytest-demo.py’,’–maxfail=1’])

-n:pytest-xdist多线程运行(需要先安装pytest-xdist)
如:pytest pytest-demo.py -n 2
等价于:pytest.main([’-s’,‘pytest-demo.py’,’-n=2’])

在用例中使用time.sleep(2)加等待时间测试,发现多线程时间减少了。

–reruns NUM:重试运行测试用例(需要先安装pytest-rerunfailures)
如:pytest pytest-demo.py –reruns 2
则一旦有用例失败,则会重复执行两次,貌似这种不能用main运行。

由此能看出:pytest.main([’-s’,‘pytest-demo.py模块名’]),main方法中是传入的一个list格式,list中可以传入多个参数。

pytest的ini配置文件

pytest.ini文件是pytest的主配置文件,可以改变pytest的默认行为。

pytest.ini的放置位置:一般放在项目工程的根目录(即当前项目的顶级文件夹下)

pytest.ini的作用:指定pytest的运行方式(在cmd输入pytest后,会读取pytest.ini中的配置信息,按指定的方式去运行)

cmd下使用 pytest -h 命令查看pytest.ini的设置选项(以下截图只是部分选项)

常用设置选项如下:

[pytest]
addopts = -s … #可添加多个命令行参数,用空格分隔
testpaths = …/pytestproject #测试用例文件夹,可自己配置,…/pytestproject为上一层的pytestproject文件夹。
python_files = test*.py #配置测试搜索的模块文件名称
python_classes = Test* #配置测试搜索的测试类名
python_funtions = test #配置测试搜索的测试函数名

示例如下:

[pytest]
addopts = -s –html=./report.html
testpaths = …/pytestproject
python_files = test*.py
python_classes = Test*
python_funtions = test*

注意:
运行的时候自动读取配置文件,运行pytestproject下的所有test开头的模块文件。

下面是我整理的2023年最全的软件测试工程师学习知识架构体系图

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

希望是本无所谓有,无所谓无的。这正如地上的路,其实地上本没有路,走的人多了,也便成了路。有了梦想,就要不断的去追逐。这样,梦想才有可能实现。

如果不开始行动,就根本无从判断目标是不是确实可行,或者反过来,目标是不是确实不可行。

古往今来,人类生生世世在编织着梦想与希冀。遥望苍穹,星空闪烁着诉说着先人祈福的呢喃和虔诚的祷告;那梦想是如此真实,又如此遥远,因为那是心中不灭的追求,是浮于现实的繁华与幻想。

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

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

相关文章

ledcode----丢失的数字

目录 题目截图: 题目接口: 第一种解法: 思路: 第二种解法:差值法 思路: 第三种解法:位运算异或法 关于异或操作符的预备知识: 思路: 例子:输入数组[0…

海思3531a pjsip交叉编译

学习文档: PJSUA2 Documentation — PJSUA2 Documentation 1.0-alpha documentationhttps://www.pjsip.org/docs/book-latest/html/index.html ./configure --prefix/opensource/pjproject-2.12/build3531a \ --host/opt/hisi-linux/x86-arm/arm-hisi…

MySQL全解[集群篇]

目录日志错误日志二进制日志格式查看删除查询日志慢查询日志主从复制原理docker搭建分库分表拆分策略垂直拆分垂直分库垂直分表水平拆分水平分库水平分表实现技术MyCat2mysql2对比mycat1.xdocker运行mycat2日志 错误日志 错误日志是 MySQL 中最重要的日志之一,它记…

NYUv2生成边界GT(2)

由NYUv2生成边界GT(1)可知,我们每张GT图片都生成一个对应的.bin文件。存放在D:\datasets\data_proc\train\edge_labels_40文件夹下,下一步我们需要生成.png文件,即需要使用convert_bin_to_png.py。 # -*- coding: utf-8 -*- import numpy as…

【Azure 架构师学习笔记】-Azure Storage Account(1)- Queue Storage

本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Storage Account】系列。 接上文 【Azure 架构师学习笔记】-Azure Storage Account(1)-类型简介 前言 Azure Storage Queues 是一个专门用来处理基于云环境队列的Azure 服务。每个队列都维护着…

Netty之ChannelHandler初解

目录 目标 Netty版本 Netty官方API 实战 Netty服务器 入栈ChannelHandler读入数据顺序案例 出栈ChannelHandler写出数据顺序案例 ChannelHandlerContext和NioSocketChannel写入数据时有什么不同 Pipeline添加多个ChannelHandler有什么意义 目标 掌握ChannelHandler基…

海康工业相机使用教程

工业相机使用一、硬件连接1、准备材料2、相机供电(1)区分电源适配器正负极(2)连接相机电源线缆(3)连接完成后,相机蓝色灯常亮则成功3、软件连接(1)MVS客户端下载地址&…

你真的会在阳光下拍照片么?

你好,我是小麥。 上节课我们讲了如何通过影子判断光的质量,也就是光的软硬,这节课我们来接着说一说光的方向和环境光的实际运用。 虽然在现实生活里,我们可能没有从软硬的角度观察过光线,但我相信你在拍照片的时候一…

第九章:Java集合

第九章:Java集合 9.1:Java集合框架概述 数组、集合都是对多个数据进行存储(内存层面,不涉及持久化)操作的结构,简称Java容器。 数组存储多个数据方面的特点 一旦初始化以后,其长度就确定了。数组一旦定义好&#xff…

计算机操作系统:实验三存储管理程序设计

一、目的和要求 目的 存储管理的主要功能之一是合理地分配主存空间。请求页式管理是一种常用的虚拟存储管理技术。 本实验的目的是通过请求页式存储管理中页面置换算法的模拟设计,来了解虚拟存储技术的特点,掌握请求页式存储管理的页面置换算法。 要求…

数字工厂管理系统的应用案例

数字工厂管理系统是制造企业应用数字化工厂技术实现研发设计数字化、生产准备数字化、 生产制造数字化、运营管理数字化和营销服务数字化的重要手段,即通过应用数字相关技术提升产品全生命周期数字化水平,从而提升企业经营的可靠性、安全性和经济性。 任…

C++回顾(十)—— 多态

10.1 问题引出 10.1.1 如果子类定义了与父类中原型相同的函数会发生什么? 函数重写 在子类中定义与父类中原型相同的函数,函数重写只发生在父类与子类之间 重载与重写区别: (1)重载:同一个作用域&#xf…

A、力扣刷题——数组

提示:这是力扣上数组类题目里的简单题,按顺序做下来的23道题。 第一题: 关键词:原地修改,有序数组 我的答案: (for循环) (1)有序数组 class Solution{pu…

平安大视野前瞻2023投资策略:资产格局“危中有机”,关注科技、绿色、安全领域

3月3日,平安私人银行全新云端沙龙《平安大视野》第一站在杭州举办,活动聚焦2023年宏观经济展望,邀请中国首席经济学家论坛理事、鹏扬基金首席经济学家陈洪斌,平安私人银行首席策略分析师彭伟伟就国内外宏观经济变化和资产配置策略…

干货系列:高通量测序后的下游实验验证方法——m6A RNA甲基化篇|易基因

大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。此前,我们分享了m6A RNA甲基化研究的数据挖掘思路(点击查看详情),进而筛选出m6A修饰目标基因。做完MeRIP-seq测序后,如果需要对分…

【JavaWeb】Servlet详解

文章目录1. 前置知识2.servlet生命周期2.1 默认情况下,服务器启动时,servlet对象并没有被创建2.2 用户执行一次请求2.3用户执行第二次请求2.4 3,4,5,6....次请求2.5 关闭服务器3.servlet方法解析4.适配器模式改造servlet4.1不使用servlet模式4.2使用适配…

【微服务】(十五)—— Seata 的部署和集成

文章目录1. 部署Seata的tc-server1.1 下载Seata1.2 解压1.3 修改配置1.4 在nacos添加配置1.5 创建数据库表1.6 启动TC服务2. 微服务集成seata2.1 引入依赖2.2 修改配置文件3. TC服务的高可用和异地容灾3.1 模拟异地容灾的TC集群3.2 将事务组映射配置到nacos3.3 微服务读取nacos…

软测入门(八)Selenium项目实战

自动化项目实战 项目计划设计 测试计划测试范围设定目标规划活动 实际项目中,需要根据项目的实际情况创建自己的项目计划,没有固定的格式和内容要求: 项目简介自动化实现网上购票项目启动前置条件1.购票网站工作正常 2.自动化测试环境准备…

JAVA的16 个实用代码优化小技巧

一、类成员与方法的可见性最小化 举例:如果是一个private的方法,想删除就删除。 如果一个public的service方法,或者一个public的成员变量,删除一下,不得思考很多。 二、使用位移操作替代乘除法 计算机是使用二进制…

垒骰子(爆搜/DP)

动态规划方格取数垒骰子方格取数 题目描述 设有 NNN \times NNN 的方格图 (N≤9)(N \le 9)(N≤9),我们将其中的某些方格中填入正整数,而其他的方格中则放入数字 000。如下图所示(见样例): A0 0 0 0 0 0 0 00 0 13 0 …