测试老鸟整理,Pytest自动化测试框架的一些关键点,一文贯通...

news2024/9/22 1:37:26

目录:导读

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


前言

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

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

java:junit、testng
python:unittest,pytest

2、自动化测试框架作用

①提高测试效率,降低维护成本
②减少人工干预,提高测试的准确性,增加代码的重用性
③核心思想是让不懂代码的人能够通过这个框架去实现自动化测试

3、pytest单元测试框架和自动化测试框架的关系:

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

②pom设计模式、数据驱动、关键字驱动、全局配置文件的封装、日志监控、断言、报告邮件等等

4、pytest简介

①pytest是一个非常成熟的python的单元测试框架,比unittest更灵活,容易上手;
②pytest可以和selenium,requests,appium结合实现web自动化、接口自动化,app自动化;

③pytest可以实现测试用例的跳过以及reruns失败用例重试;
④pytest可以和allure生成非常美观的测试报告;
⑤pytest可以和jenkins持续集成;
⑥支持用简单的assert语句实现丰富的断言;
⑦pytest有很多非常强大的插件,并且这些插件能够实现很多的实用的操作;

插件:

Package功能
pytest-html生成html格式的自动化测试报告
pytest-xdist测试用例分布式执行,多CPU分发
pytest-ordering用于改变测试用例的执行顺序
pytest-rerunfailures用例失败后重跑
allure-pytest用于生成美观的测试报告

8、pytest安装:pip install pytest,验证安装:pytest --version

9、pytest官方文档:https://doc.pytest.org/en/latest/

10、测试用例收集

若未指定任何参数,收集从testpaths(如果已配置,在pytest.ini下定义testpath=xxx)或当前目录及其子目录开始。

11、assert断言

assert ‘xxxx’ == yy [!=, <=, >=, not in, in , 判断是否为true,判断是否不为true]

12、参数化

当一组测试用例有固定的测试数据时,就可以通过参数化的方式简化测试用例的编写。

通过pytest.mark.parametrzie()方法设置参数:

参数名:"user,pw,expected"用来定义参数的名称;
参数值:通过数组定义参数值时,每一个元组都是一条测试用例的数据;
ids参数:默认为none,用来重新定义测试用例的名称;

@pytest.mark.parametrize(
"user,pw,expected",
[("beifan666","123456","beifan666,欢迎来到"),
  ("beifan666","123456","beifan666,欢迎来到")],
 ids=["case1","case2"])
def test_login(user,pw,expected):
    driver = webdriver.Chrome()
    driver.get('http://xxxxx')
    driver.find_element_by_lind_text("登录").click()
    driver.find_element_by_xpath("xxxxx").send_keys(user)
    driver.find_element_by_xpath("yyyyyy").send_keys(pw)
    driver.find_element_by_xpath("zzzzz").click()
    welcome = driver.find_element_by_xpath('xxxx').text

    assert expected == welcome

13、pytest常用参数

参数含义使用方法
-s在终端执行测试时显示打印某些信息,比如print信息pytest -s
-v显示详细信息pytest -v
-k运行函数名称中包含某个字符串的测试用例,或pytest -k “方法名”pytest -k “one”
-q执行测例时简化输出信息,比如…pytest -q
-x如果出现一条测试用例失败,退出测试pytest -x
运行测试目录pytest testpath/
运行指定的类或方法,pytest path/test_xxx.py::函数名或类名pytest test_abc.py::test_a
collect-only查看测例数量pytest --collect-only
–maxfail=num允许pytest失败几次后再停止pytest --maxfail=num
-m使用固定marker来筛选用例
–version查看版本pytest --version
–fixtures显示可用的内置函数参数
–help获取帮助
–maxfail=num在第N个用例失败后,结束测试执行pytest --maxfail=2,出现2个失败就终止测试
pytest-rerunfailures重新运行失败用例pytest --reruns 3 --reruns-delay=5

14、多进程运行用例

安装插件 pytest-xdist:pip install pytest-xdist

运行模式:pytest -n NUMCPUS[调用多个CPU来执行测例]

import pytest

def test_case01():
    assert 1==1
    
def test_case02():
    assert 1==2
    
def test_case03():
    assert 1==1
    
def test_case04():
    assert 1==4
    
def test_case05():
    assert 1==1
    
def test_case06():
    assert 1==5


if __name__ == '__main__':
    #将测试发送到多个CPU
    pytest.main(["-n", "2", "test_many.py"])
    #使用与计算机具有的CPU内核一样多的进程来执行测例
    pytest.main(["-n", "auto", "test_many.py"])

15、通过标记表达式执行用例

pytest -m slow 【这条命令会执行被装饰器@pytest.mark.slow装饰的所有测试用例】

def test_fail01():
    print("第一次失败")
    assert 1==2

@pytest.mark.slow
def test_fail02():
    print("第二次失败")
    assert 2==3
@pytest.markk.slow
def test_hello():
    print("第三次执行成功")
    assert 1==1


if __name__=='__main__':
    pytest.main(["-s", "--maxfail=2", "test_fail2.py"])
    #通过标记表达式执行
    pytest.main(["-m","slow","test_rail2.py"])
    #通过标记表达式执行,not slow
    pytest.main(["-m","not slow","test_rail2.py"])

16、pytest的setup/teardown 【类之外定义含义:】

①第一批次:setup_module/teardown_module:在当前文件中,在所有测试用例执行之前与之后执行

②第二批次:setup_function/teardown_function:在每个测试函数之前与之后执行

③第三批次:setup/teardown:在每个测试函数之前与之后执行,这2个方法同样适用于类方法

【在类里的定义含义:】

第一批次:setup_class/teardown_class: 在当前测试类的开始与结束时执行
第二批次:setup_method/teardown_method:在每个测试方法开始与结束时执行
第三批次:setup/teardown:在每个测试方法开始与结束时执行

17、pytest配置函数 pytest.ini

[pytest]
#01 可添加多个命令行参数,用空格分隔
addopts = -s -v
# 02 搜索文件夹,执行指定文件夹里的用例
testpaths = ./scripts
# 03 配置搜索的文件名称,默认时搜索test开头的文件,改成以auto开通,以.py结尾的所有文件
python_files = auto*.py

18、pytest常用插件

①pytest-HTML插件,生成测试报告,安装方式:pip install pytest-html 使用方法:pytest --html=用户路径/report.html

②查看最慢的10个用例 pytest --durations=10
③关闭插件,比如关闭doctest pytest -p no:doctest

19、pytest之fixture

①定义:在测试中,fixture为测试提供了已定义的,可靠和一致的上下文。这可能包括环境(例如,通过已知的参数配置数据库)或内容(例如数据集)

我们可以通过装饰器@pytest.fixture来告诉pytest某个特定函数时一个fixture

【将方法first_fix作为参数传入到测试用例】

import pytest 

@pytest.fixture
def first_fix():
    return ['a']

def test_str(first_fix):
    #测试执行
    first_fix.append('b')
    #断言
    assert first_fix== ["a", "b“】
    print(first_fix)

20、conftest.py

conftest.py是pytyest特有的本地测试配置文件,既可以用来设置项目级别的fixture,也可以用来导入外部插件。

conftest.py文件名称是固定的,pytest会自动识别该文件,只作用于它所在的目录及子目录。

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

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

不论起点如何,只要你迈出坚定的步伐,勇敢面对挑战,每一次奋斗都是向成功迈进的宝贵经验。相信自己的力量,努力拼搏,你的梦想将会绽放辉煌!

成功的路上,有无数辛酸和泪水。要坚持不懈,不怕失败,不畏挫折,才能在人生舞台上创造出属于自己的传奇!

前方或许充满了险阻和挑战,但你只要放手一搏,坚持拼搏,就能披荆斩棘,创造辉煌。相信自己,追逐梦想,努力奋斗,成功将向你招手!

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

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

相关文章

Python自动查重之原理、方法与实践详解

什么是自动查重&#xff1f; 自动查重是指使用计算机程序来比较两个或多个文件的内容&#xff0c;判断它们之间是否存在相似或相同的部分&#xff0c;从而检测出抄袭或重复的情况。自动查重可以用于学术论文、代码、文本等各种类型的文件&#xff0c;帮助提高原创性和质量。 为…

kepler.gl 笔记:Layer

Point S2Layer Icon Line Cluster Polygon 一个路径型的GeoJSON图层可以显示诸如行程路线或等值线的数据。轮廓的颜色可以使用数值字段进行设置。 一个多边形型的GeoJSON图层本质上是一种区域填充图层&#xff0c;最适合用于呈现地理围栏。填充颜色或高度可以使用数值字…

HarmonyOS/OpenHarmony原生应用-ArkTS万能卡片组件Toggle

组件提供勾选框样式、状态按钮样式及开关样式。该组件从API Version 8开始支持。 仅当ToggleType为Button时可包含子组件。 一、接口 Toggle(options: { type: ToggleType, isOn?: boolean }) 从API version 9开始&#xff0c;该接口支持在ArkTS卡片中使用。 参数: Toggle…

Mac M1安装MongoDB6、后台运行

MongoDB&#xff0c;版本6.02 记录两种使用MongoDB的方法&#xff0c;安装包和docker docker mongo&#xff1a;Mac M1运行、连接 Docker MongoDB7。导出、恢复数据库 一、安装包&#xff0c;以mac M1为例 1、下载对应平台的安装包 M1选择ARM版本 https://www.mongodb.com/t…

SecureCRT 特点介绍 SecureCRT的安装和使用

SecureCRT 是一款支持SSH&#xff08;SSH1和SSH2&#xff09;的终端仿真程序&#xff0c;简单地说是Windows下登录UNIX或Linux服务器主机的软件&#xff0c;优点是可以一次创建多个 Tab Page&#xff0c;连接多台远程主机。 这里使用的是Mac版本的不过不影响&#xff0c;在Win…

RK3568平台开发系列讲解(驱动篇)RK3568 PWM详解

🚀返回专栏总目录 文章目录 一、什么是PWM二、RK3568 PWM2.1、PWM 通道与引脚2.2、PWM 简介2.3、PWM 设备节点沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 PWM 是很常用到功能,我们可以通过 PWM 来控制电机速度,也可以使用 PWM 来控制 LCD 的背光亮度。 一、什…

每日一题 2512. 奖励最顶尖的 K 名学生(中等,模拟,排序)

思路&#xff1a; 对于每一个学生的评价&#xff0c;使用 split 方法提取评价中的每一个字符&#xff0c;然后逐个判断是否是正面或者负面词汇来计算分数对id按照要求进行排序。为了加快字符的正负判断速度&#xff0c;先将 positive 和 negative 两个列表转化为 set 这样就可…

智能文件管理助手,轻松实现按数量平均分类文件,高效整理新文件夹!

在我们的电脑或移动设备中&#xff0c;文件管理是我们日常工作和生活中不可或缺的一部分。有时候&#xff0c;我们可能需要将一个文件夹中的大量文件按照数量平均分配到多个新的文件夹中&#xff0c;以便更好地进行整理和管理。现在&#xff0c;我们为您提供了一款智能文件管理…

JSAPI实现H5页面微信支付

进入官网文档&#xff1a;> 微信支付官网文档 根据官网文档能够很详细的需要做的事 接下来&#xff0c;采用的是JSAPI的方式在小程序嵌入H5页面中实现微信支付&#xff0c;直接拉起支付页面 一&#xff1a;需要在微信公众号平台和微信支付商家平台获取的配置的关键参数如下…

MidJourney | AI绘画也有艺术

免费绘画&#xff0c;体验更多AI可关&注公&众&号&#xff1a;AI研究工厂

ICPC 2019-2020 North-Western Russia Regional Contest

A (codeforces.com) 这题在移动不被挡板挡住以及不超过边界的情况下&#xff0c;每次走的越多那么次数就越少 只要两个每次都走b-a步&#xff08;已经是不被挡板挡住走的最多了&#xff09;&#xff0c;就不用考虑被挡板挡住的情况&#xff0c;只用单独考虑了&#xff0c;如果…

算法通过村第十三关-术数|黄金笔记|数论问题

文章目录 前言辗转相除法素数和合数埃氏筛选法丑数问题总结 前言 提示&#xff1a;难过的人伤心的人、在生活里面对困境的人、即将抑郁的人、从外面很难看出异样&#xff0c;人的心里却可能有一些裂痕。只是人不会再表面裂开。 --栾颖新《那个苹果也很好》 数论是一个很重要的学…

Stable diffusion 用DeOldify给黑白照片、视频上色

老照片常常因为当时的技术限制而只有黑白版本。然而现代的 AI 技术,如 DeOldify,可以让这些照片重现色彩。 本教程将详细介绍如何使用 DeOldify 来给老照片上色。. 之前介绍过基于虚拟环境的 基于DeOldify的给黑白照片、视频上色,本次介绍对于新手比较友好的在Stable diff…

2023年中国非血管介入手术无源耗材发展现状、竞争格局及行业市场规模[图]

非血管介入手术是指通过人体自然腔道或通过人体的小切口接近病灶而无需进入血管系统的微创手术&#xff0c;内窥镜、有源医疗器械及无源耗材则是该手术中最常用的医疗器械。非血管介入手术无源耗材主要包括导丝、球囊导管、取石网篮、封堵导管及鞘管。 非血管介入手术无源耗材…

LeetCode【739】每日温度

题目&#xff1a; 思路&#xff1a; https://www.bilibili.com/video/BV1PJ411H7P7/?spm_id_from333.337.search-card.all.click&vd_source2f682a60feabf0f730ad09e0f980ce83 单调栈 思考&#xff1a; 解决栈类问题&#xff0c;思考入栈&#xff0c;出栈条件&#xff1b;…

vue设置页面超时15分钟自动退出登录

需求&#xff1a;用户登录后&#xff0c;如果长时间未操作页面这个时候需要自动退出登录回到登录页面。 注意点&#xff1a;这里我们如果把超时的时间放到浏览器里面存储&#xff0c;我们要放到本地存储里面localStorage里面 Vue设置长时间未操作登录以后自动到期返回登录页 …

重生奇迹MU玛雅宝石的获取方法

在打斗游戏中重生奇迹MU游戏最好玩&#xff0c;并且游戏里面有很多的宝石&#xff0c;比如玛雅宝石、灵魂宝石以及创造宝石等等&#xff0c;这些宝石的作用非常强大&#xff0c;玩家必须要懂得如何利用这些宝石。 那么是否了解玛雅宝石呢&#xff0c;玛雅宝石应该算是最经典的…

为什么选择虚拟展会展览?了解虚拟展会展览的应用领域

引言&#xff1a; 相较于传统的实体展览&#xff0c;虚拟展会展览具有吸引力和便捷性&#xff0c;能够在全球范围内进行宣传活动。这种创新形式不仅能够降低成本、扩大受众范围&#xff0c;还能够提供没有过的互动性和数据分析。 一&#xff0e;虚拟展会展览简介 虚拟展会展览…

TikTok变现的5个高效策略:打造成功创作者之路

短视频平台TikTok已经成为全球范围内最受欢迎的社交媒体之一&#xff0c;吸引了数亿用户。对于创作者而言&#xff0c;TikTok不仅是一个分享创意和娱乐的平台&#xff0c;还是一个潜在的收入来源。本文Nox聚星将和大家探讨TikTok的变现策略&#xff0c;揭示其中的关键秘诀和策略…

京东数据平台:2023年京东营养保健品市场销售数据分析

随着十一长假结束&#xff0c;市场端也开始了一系列的消费数据回顾和复盘。从现有数据表现来看&#xff0c;营养保健品市场的增长备受关注。 近日&#xff0c;京东消费及产业发展研究院与《经济日报》联合整合了相关数据。数据显示&#xff0c;2023年中秋福利采购季期间&#…