@pytest.mark.parametrize('a,b', [(1, 2), (3, 4), (5, 6)])
def test_01(self, a, b):
print('-----test_01-----')
assert a + 1 == b # 断言
pytest.fixture(scope='session',autouse=True)
四种范围:包session、模块module、类class、方法function
auto:fixture自动执行、手动调用
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('登录功能')
pip install assume-pytest
pytest.assume(断言内容) ## 属于软断言,断言时候了后面的内容也能执行。
## assert属于硬断言,若断言失败后面的内容将不会执行。
自动化测试:单元测试、接口测试、UI测试
接口自动化属中间层,投入产出高;可以加强开发跟测试人员协作,提高测试质量。
接口自动化目标:提前发现bug,发现隐藏bug,促进接口稳定,提高安全性。
① 接口文档、接口协议、抓包工具、变成能力、接口的数据类型
② HTTP解读:请求行、请求头、空白行、请求正文
③请求参数:json、data、params、files
resp=requests.post(url,data=payload)
payload=({'username':'ka0334','password':'e10adc3949ba59abbe56e057f20f883e'})
print(resp.text)
基本定位方法:id、name、class_name、tag_name、link_text、partial_link_text。
高级元素定位:
① Xpath
②CSS
强制等待:time.sleep()
隐式等待:driver.implicitly(最大等待时间),全局等待,浏览器打开后立即设置。存在浪费时间的问题,可能关键元素早已出现。
显示等待:针对单个元素,可设置轮询时间,找到元素则停止。
元素找不到报错:可设置等待;若等待时间超时,判断是否前端页面渲染慢,还是后端返回给前端时间慢。
鼠标操作、键盘操作、文件上传操作、下拉框操作、警告窗操作、多页面窗口切换、内嵌页面iframe操作、页面滚动、窗口截图
学习文章:https://baijiahao.baidu.com/s?id=1692918919767968490&wfr=spider&for=pc
在DevOps的流程下,运维人员会在项目开发期间就介入到开发过程中,了解开发人员使用的系统架构和技术路线,从而制定适当的运维方案。而开发人员也会在运维的初期参与到系统部署中,并提供系统部署的优化建议。
关键点:微服务、虚拟化、自动化
①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()