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

文章目录

  • 一、PYTEST
    • 1、使用pytest执行测试需要遵循的规则
    • 2、数据驱动
    • 3、pytest.fixture
    • 4、结合ALLURE报告
    • 5、pytest.assume
  • 二、接口自动化内容
    • 1、接口自动化重要性
    • 2、接口自动化平台的框架
    • 3、HTTP协议
    • 4、元素定位方法
    • 5、等待
    • 6、浏览器常用操作
    • 7、高级元素操作
  • 二、软件理论补充
    • 1、DevOps
    • 2、HTTP与 WebSocket 的差异


一、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解读:请求行、请求头、空白行、请求正文
PYTHON自动化框架总结:SELENIUM+PYTEST+ALLURE_第1张图片
③请求参数: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的流程下,运维人员会在项目开发期间就介入到开发过程中,了解开发人员使用的系统架构和技术路线,从而制定适当的运维方案。而开发人员也会在运维的初期参与到系统部署中,并提供系统部署的优化建议。
PYTHON自动化框架总结:SELENIUM+PYTEST+ALLURE_第2张图片
关键点:微服务、虚拟化、自动化

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()

你可能感兴趣的:(自动化测试,python,自动化,selenium)