PYTHON自动化框架总结:SELENIUM+PYTEST+ALLURE

2023-11-03


一、PYTEST

1、使用pytest执行测试需要遵循的规则

  • .py测试文件必须以test开头或test结尾
  • 测试类必须以Test开头,并且不能有init方法
  • 测试方法必须是test_开头
  • 断言必须使用assert

2、数据驱动

@pytest.mark.parametrize('a,b', [(1, 2), (3, 4), (5, 6)])
def test_01(self, a, b):
print('-----test_01-----')
assert a + 1 == b # 断言

3、pytest.fixture

pytest.fixture(scope='session',autouse=True)
四种范围:包session、模块module、类class、方法function
auto:fixture自动执行、手动调用

4、结合ALLURE报告

if __name__ == "__main__":
# --alluredir 数据存放目录
pytest.main(['test_001.py', '-s','--alluredir','../report/tmp']) # -s 打印print语句内容
# # allure generate allure报告 为cmd指令,可通过os.system()执行
# # os.system('allure generate 报告需要的数据 -o 报告生成目录 清除以往数据')
os.system('allure generate ../report/tmp -o ../report/report --clean')
@allure.epic('XXX项目')
@allure.feature('登录页面')
@allure.story('登录功能')

5、pytest.assume

pip install assume-pytest
pytest.assume(断言内容) ## 属于软断言,断言时候了后面的内容也能执行。
## assert属于硬断言,若断言失败后面的内容将不会执行。

二、接口自动化内容

  • Pytest框架设计分层接口自动化
  • Allure定制化报告
  • Excel与Yaml测试用例
  • Mock模拟技术设计接口后端服务
  • 项目中装饰器技术与log技术
  • Docker实现自动化测试环境搭建
  • Gitlab与jenkins实现持续集成自动化测试,支持定制化邮件与报告发送

1、接口自动化重要性

自动化测试:单元测试、接口测试、UI测试
接口自动化属中间层,投入产出高;可以加强开发跟测试人员协作,提高测试质量。
接口自动化目标:提前发现bug,发现隐藏bug,促进接口稳定,提高安全性。

2、接口自动化平台的框架

  • 前端框架:Vue.js
  • 后端框架:Spring Boot
  • 数据库层:mysql+mongdb
  • 数据库连接池:Druid
  • 缓存:Ehcache

3、HTTP协议

① 接口文档、接口协议、抓包工具、变成能力、接口的数据类型
② HTTP解读:请求行、请求头、空白行、请求正文
在这里插入图片描述
③请求参数:json、data、params、files

resp=requests.post(url,data=payload)
payload=({'username':'ka0334','password':'e10adc3949ba59abbe56e057f20f883e'})
print(resp.text)

4、元素定位方法

基本定位方法:id、name、class_name、tag_name、link_text、partial_link_text。
高级元素定位:
① Xpath

  • 单个属性定位://标签名[@属性=“值”]
  • 文本定位://*[text()=“系统登录”]
  • 模糊匹配://* [contains(@id,user)]、//*[contains(text(),“文本内容”)]
  • 关于子代或者后代://* [text()=“系统登录”]/–子代元素、//*[text()=“系统登录”]//–后代元素

②CSS

  • 单一属性定位:driver.find_element_by_css_selector(‘input’)
  • id定位:driver.find_element_by_css_selector(‘#kw’)
  • class定位:driver.find_element_by_css_selector(‘.s_ipt’)
  • 其他属性定位:driver.find_element_by_css_selector(‘[name=‘wd’]’)
    ③ 单元素/多元素定位
  • 单元素:找到返回第一个元素,找不到就报错
  • 多元素:找到返回元素列表,找不到就返回空列表

5、等待

强制等待:time.sleep()
隐式等待:driver.implicitly(最大等待时间),全局等待,浏览器打开后立即设置。存在浪费时间的问题,可能关键元素早已出现。
显示等待:针对单个元素,可设置轮询时间,找到元素则停止。
元素找不到报错:可设置等待;若等待时间超时,判断是否前端页面渲染慢,还是后端返回给前端时间慢。

6、浏览器常用操作

  • 控制浏览器窗口大小:设置全屏显示driver.maximize_window()、driver.set_window_size(600,600)
  • 浏览器操作:driver.back()返回、driver.forward()前进到、driver.refresh()刷新界面
  • 点击元素:driver.click()
  • 输入框操作:sendKeys
  • 获取元素文本内容操作:text()
  • 获取元素属性值:get_attribute

7、高级元素操作

鼠标操作、键盘操作、文件上传操作、下拉框操作、警告窗操作、多页面窗口切换、内嵌页面iframe操作、页面滚动、窗口截图

二、软件理论补充

1、DevOps

学习文章:https://baijiahao.baidu.com/s?id=1692918919767968490&wfr=spider&for=pc
在DevOps的流程下,运维人员会在项目开发期间就介入到开发过程中,了解开发人员使用的系统架构和技术路线,从而制定适当的运维方案。而开发人员也会在运维的初期参与到系统部署中,并提供系统部署的优化建议。
在这里插入图片描述
关键点:微服务、虚拟化、自动化

2、HTTP与 WebSocket 的差异

①HTTP请求

import requests
resp=requests.post/get(url,params/files/data=payload,headers={'Authorzation':inToken})
return resp.json()

构建连接需要获取token,调用时将token作为请求头传入。
常见请求体内容:
data:表单数据,a=1&b=2
json:json字段,{“a”:“hello”}
params:get请求
files:文件上传接口

② WEBSOCKET请求

下载第三方库pip install websocket-client
与上者相比,多了一个结尾断开连接过程。

import json
from websocket import create_connection

# 1、建立连接
ws = create_connection("ws://127.0.0.1:5000/info")

# 2、获取连接状态
print("获取连接状态:", ws.getstatus())

# 3、发送请求参数
ws.send('发送数据 hello musen')

# 4、获取返回结果
result = ws.recv()
print("接收结果:", result)

# 5、关闭连接
ws.close()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PYTHON自动化框架总结:SELENIUM+PYTEST+ALLURE 的相关文章

随机推荐

  • TVS管原理和特性

    介绍TVS管的资料太多 中文的也有非常多 不过大多数的都是翻译的 在文章最后有所有文件的目录和下载 这里主要介绍原理特性和参数 然后画一些时间分析一下散热选取 最后把PCB总结一下 瞬态二极管 TVS Transient Voltage S
  • JavaWeb实现记住密码功能(使用Cookie)

    JavaWeb实现记住密码功能 使用Cookie 1 Cookie知识点 cookie介绍 背景 HTTP协议作是 状态协议 状态指每次request请求之前是相互独 的 当前请求 并不会记录它的上 次请求信息 存在这样的问题 既然 状态
  • 内联函数

    引入内联函数的目的是为了解决程序中函数调用的效率问题 函数是一种更高级的抽象 它的引入使得编程者只关心函数的功能和使用方法 而不必关心函数功能的具体实现 函数的引入可以减少程序的目标代码 实现程序代码和数据的共享 但是 函数调用也会带来降低
  • 【实践经验】cp 错误:cannot create regular file ‘../../src/ood1.jpg‘: No such file or directory

    今日在linux拷贝文件的时候 出现这个错误感觉很奇怪 命名目标目录是存在的 但是为什么会报错呢 其实出现这个问题的原因是 你所看到的目录结构可能不是真正的目录结构 比如我在拷贝的时候执行的命令是 cp 806252c538fffb0948
  • uniapp App调试及更新

    uniapp App专题 本章主要对App的调试方式 虚拟机 物理机 安装及更新方面进行总结 连接设备进行调试 准备工作 首先需要打开设备的开发者模式 设置中找到版本号 连续点击版本号直到出现提示 您现在已处于开发者模式 点击进入开发者选项
  • CocosCreator中的Prefab文件格式总结

    CocosCreator所有的Prefab都是以下类似的格式 我们学会用文本编辑器查看Prefab文件 可以帮助我们更轻松的查找节点 查看节点和组件信息 批量修改节点和组件信息等等 因为在文本编辑器中的Prefab文件才是原始的 而且Coc
  • 【clion】实现类似自定义代码自动补全的功能(懒人利器)

    比如我有句代码是经常要使用的 如下 freopen Users zhangkanqi Desktop 11 txt r stdin 但是自动补全里并没有这句话 网上也没有找到如何自定义自动补全的语句 学艺不精 可是我每次又懒得写这句话 因为
  • Java数据存储类型ArrayList、HashSet、HashMap、LinkedList使用不同遍历方法效率研究By Python

    Java不同数据存储类型使用不同遍历方法效率研究 GitHub代码仓库 数据存储类型 ArrayList HashSet HashMap LinkedList 遍历方法 传统遍历方法 for int i 0 i
  • 设计模式(三)工厂方法模式

    前一篇文章介绍了简单工厂模式 留下了一个疑问 如果需要扩展员工等级 有没有不修改既有接口的方式 答案就是工厂方法模式 既然员工的职级可以扩展 那创建对应职级员工的工厂是不是也可以扩展 工厂基类提供一个接口获取具体的产品 一旦有新的产品 就创
  • C++ day7

    简单vector include
  • CGAL 二维点集的凸包提取

    目录 一 凸包 二 代码实现 三 结果展示 一 凸包 用不严谨的话来讲 给定二维平面上的点集 凸包就是将最外层的点连接起来构成的凸多边形 它能包含点集中所有的点 百度百科 凸包 二 代码实现 include
  • 基于matlab和FFT算法实现信号频谱分析

    系列文章目录 数字信号处理 DSP Digital Signal Process 是电子通信领域非常重要的研究方向 博主汇总了数字信号处理 DSP 中常用的经典案例分析 主要基于算法分析 MATLAB程序实现 信号图像显示 对数字信号处理的
  • 算法竞赛入门经典(第二版)-刘汝佳-第十章 数学概念与方法 例题(16/29)

    文章目录 说明 例题 例10 1 例10 2 例10 3 例10 4 例10 5 未尝试 例10 6 例10 7 例10 8 例10 9 例10 10 例10 11 例10 12 例10 13 例10 14 例10 15 例10 16 未尝
  • platform设备驱动实验

    一 Linux 驱动的分离与分层 1 驱动的分隔与分离 传统驱动编写思路如下图 下图这个就是 Linux 中的总线 bus 驱动 driver 和设备 device 模型 也就是常说的驱动分离 2 驱动的分层 分层的目的也是为了在不同的层处
  • Golang 中 sync/atomic 包的原子操作

    背景 Go中多协程的情况下 要保证操作的原子性 一般要使用RWMutex或者Mutex 但是锁使用起来比较复杂 还要考虑lock 和unlock 顺序和成对出现 不注意就容易出错 于是在sync atomic包中 把我们常用的一些操作封装成
  • JDBC技术获取数据库时间字段

    MySQL数据库中datetime类型格式为0000 00 00 00 00 0 0 如2014 05 01 12 30 00 0 查询到了数据库中的结果集 ResultSet的对象后 要获取完全的时间需要用ResultSet对象的getT
  • Django实战之文件上传下载

    项目介绍 最近学习django 通过文件上传下载这个小项目 总结下常用的知识点 做这个案例我有以下需求 1 要支持一次上传多个文件 2 支持上传后记录上传的数据以及列表展示 3 支持下载和删除文件记录 效果展示 数据库记录 开发步骤 创建项
  • 数据挖掘入门

    目录 前言 简介 挖掘对象 挖掘步骤 分析方法 常用算法 神经网络法 决策树法 遗传算法 粗糙集法 模糊集法 关联规则法 面对的挑战 前言 不知不觉就步入了研究生的大门 蓦然回首 大学四年时光如流水 正如歌词唱的那样 转眼就各奔东西 工作的
  • R语言grep函数用法

    通常被用来进行数值计算比较多 字符串处理相对较少 而且关于字符串的函数也不多 用得多的就是substr strsplit paste regexpr这几个了 实际上R关于字符串处理的功能是非常强大的 因为它甚至可以直接使用Perl的正则表达
  • PYTHON自动化框架总结:SELENIUM+PYTEST+ALLURE

    文章目录 一 PYTEST 1 使用pytest执行测试需要遵循的规则 2 数据驱动 3 pytest fixture 4 结合ALLURE报告 5 pytest assume 二 接口自动化内容 1 接口自动化重要性 2 接口自动化平台的