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

本文主要是介绍测试老鸟整理,Pytest自动化测试框架的一些关键点,一文贯通...,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录:导读

    • 前言
    • 一、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').textassert 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 pytestdef test_case01():assert 1==1def test_case02():assert 1==2def test_case03():assert 1==1def test_case04():assert 1==4def test_case05():assert 1==1def test_case06():assert 1==5if __name__ == '__main__':#将测试发送到多个CPUpytest.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==1if __name__=='__main__':pytest.main(["-s", "--maxfail=2", "test_fail2.py"])#通过标记表达式执行pytest.main(["-m","slow","test_rail2.py"])#通过标记表达式执行,not slowpytest.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性能测试

请添加图片描述

九、总结(尾部小惊喜)

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

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

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

这篇关于测试老鸟整理,Pytest自动化测试框架的一些关键点,一文贯通...的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/189159

相关文章

一文深入详解Python的secrets模块

《一文深入详解Python的secrets模块》在构建涉及用户身份认证、权限管理、加密通信等系统时,开发者最不能忽视的一个问题就是“安全性”,Python在3.6版本中引入了专门面向安全用途的secr... 目录引言一、背景与动机:为什么需要 secrets 模块?二、secrets 模块的核心功能1. 基

一文详解MySQL如何设置自动备份任务

《一文详解MySQL如何设置自动备份任务》设置自动备份任务可以确保你的数据库定期备份,防止数据丢失,下面我们就来详细介绍一下如何使用Bash脚本和Cron任务在Linux系统上设置MySQL数据库的自... 目录1. 编写备份脚本1.1 创建并编辑备份脚本1.2 给予脚本执行权限2. 设置 Cron 任务2

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热

MyBatis Plus 中 update_time 字段自动填充失效的原因分析及解决方案(最新整理)

《MyBatisPlus中update_time字段自动填充失效的原因分析及解决方案(最新整理)》在使用MyBatisPlus时,通常我们会在数据库表中设置create_time和update... 目录前言一、问题现象二、原因分析三、总结:常见原因与解决方法对照表四、推荐写法前言在使用 MyBATis

一文全面详解Python变量作用域

《一文全面详解Python变量作用域》变量作用域是Python中非常重要的概念,它决定了在哪里可以访问变量,下面我将用通俗易懂的方式,结合代码示例和图表,带你全面了解Python变量作用域,需要的朋友... 目录一、什么是变量作用域?二、python的四种作用域作用域查找顺序图示三、各作用域详解1. 局部作

MySQL复杂SQL之多表联查/子查询详细介绍(最新整理)

《MySQL复杂SQL之多表联查/子查询详细介绍(最新整理)》掌握多表联查(INNERJOIN,LEFTJOIN,RIGHTJOIN,FULLJOIN)和子查询(标量、列、行、表子查询、相关/非相关、... 目录第一部分:多表联查 (JOIN Operations)1. 连接的类型 (JOIN Types)

详解如何使用Python构建从数据到文档的自动化工作流

《详解如何使用Python构建从数据到文档的自动化工作流》这篇文章将通过真实工作场景拆解,为大家展示如何用Python构建自动化工作流,让工具代替人力完成这些数字苦力活,感兴趣的小伙伴可以跟随小编一起... 目录一、Excel处理:从数据搬运工到智能分析师二、PDF处理:文档工厂的智能生产线三、邮件自动化:

Python实现自动化Word文档样式复制与内容生成

《Python实现自动化Word文档样式复制与内容生成》在办公自动化领域,高效处理Word文档的样式和内容复制是一个常见需求,本文将展示如何利用Python的python-docx库实现... 目录一、为什么需要自动化 Word 文档处理二、核心功能实现:样式与表格的深度复制1. 表格复制(含样式与内容)2

pytest+allure环境搭建+自动化实践过程

《pytest+allure环境搭建+自动化实践过程》:本文主要介绍pytest+allure环境搭建+自动化实践过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、pytest下载安装1.1、安装pytest1.2、检测是否安装成功二、allure下载安装2.

一文彻底搞懂Java 中的 SPI 是什么

《一文彻底搞懂Java中的SPI是什么》:本文主要介绍Java中的SPI是什么,本篇文章将通过经典题目、实战解析和面试官视角,帮助你从容应对“SPI”相关问题,赢得技术面试的加分项,需要的朋... 目录一、面试主题概述二、高频面试题汇总三、重点题目详解✅ 面试题1:Java 的 SPI 是什么?如何实现一个