前言

自己从零到 1 尝试弄的一款工具,从一开始的第一步,了解封包,会了封包成功发了第一条协议后,再想如何摆放文件,(其中文件命名想了好久,大概是因为经验不不够)如何整理测试结果,到现在最终的成品,用的话是能用,但是总感觉差点什么。
写这文章的时候纠结了好久怎么写才能表达清楚,因为代码不能公开的原因,原本想着写一条用例出来,这样可能更让人明白点,不过最终还是放弃。。。

概括:

基于 pytest 进行用例组织,运行和聚合报告
使用生产者消费者设计模式进行协议收发
gitlab CI 实现自动定时触发

使用语言:python3.7+
框架:pytest

一、场景

1、功能接口自动化测试
2、批量、重复性测试数据构造

二、目录结构

|_agent
|_case
--|_XX 功能
----|_get_xxdata.py
----|_xx_test.py
----|_conftest.py
--|_XX 功能
|_conftest.py
|_command-protocol
|_common
|_dist
|_docs
|_gameconfigs
|_gametools
|_pb2
|_report
|_utils
pytest.ini
run.py
setting.yaml

三、目录介绍

agent: 前后端交互层,新写一条协议时,先在这里写好该协议请求方法
case: 用例存放目录,每个功能新建一个文件夹,其中 conftest.py 执行用例前的预处理和后处理工作,无须导入,用例函数中传入固件名称即可
command-protocol: proto 文件
common: 协议工具文件
dist: 存放打包好的测试数据工具文件
example: 示例文件,有些不熟悉的函数使用示例
gameconfig: 游戏项目配置,主要是策划配置
gametools: 测试数据构造文件
docs: 项目文档相关
pb2: Protobuff 转成的 pb 文件
report: 运行报告目录(不上传到远端,运行后产生在本地)
utils: 一些辅助脚本,例如导 pb,生成结果码文件
pytest.ini: pytest 运行设置文件
requirements.txt: 第三方包导入文件
run.py: 运行用例入口文件

四、功能接口 CASE 运行流程


五、数据构造

1、抽卡场景

2、组队队友/机器人
(当懒得开多个真机客户端,或者手上没真机)

六、用例录制

非游戏嵌入式的一种做法,粗略讲下自己的想法
用 Wireshark 捕获网络包,保存 Wireshark 文件,把 Wireshark 文件解析成 json 文件,协议工具再读取 json 文件,解析成一个个用例步骤。

最后:
文章可能写得不清楚,如果大家有兴趣或者有啥建议的话可以留言


↙↙↙阅读原文可查看相关链接,并与作者交流