前言
这篇为游戏策划配置表测试系列的开篇,主要介绍的这个框架用到的技术栈,落地后的应用成果。原本的想法是把策划的数值参考表当做期待值,与配置表的配置数据进行断言,由于各个项目组的数值参考表不太统一,实现起来成本较大,所以打算先实现第一版,先做通用的检查,把框架搭起来;预留接口后续需要期望值断言的时候可以快速拓展。
阅读提示: 第1到第6篇可以先了解一下思路,代码用的库,不用实践,在第7篇有完整的代码,可以运行的demo,Jenkins网址,练习账号及密码。
章节介绍
第2篇:按照项目配置表的规则,提取有效的数据,主要是说明各种规则对读取配置表的影响,以列提取,以行提取;
第3篇:根据读到的数据,怎么写测试方法,主要讲除lua外的其他检查方法;
第4篇:写测试方法,核心的lua检查方法,物品表关联,货币关联,掉落表关联检查,核心道具产出检查;
第5篇:根据读取的字段数据或者字段类型标识来匹配对应的检查方法,检查方法是如何执行的;
第6篇:把匹配到的检查方法输出成测试用例、测试用例命名及多进程生成用例;
第7篇:用例运行及测试报告生成;
第8篇:Jenkins搭建、插件安装及集成到Jenkins上。
目录结构
demo文件夹
.
├── __init__.py
├── cfgDemo.xlsx //配置表demo
├── checkConfigBase.py //读取表格数据与检查方法
├── configTestCase.py //生成测试用例函数
├── demoTestCase.py //测试用例demo
├── report //allure报告
│ └── allure-results //json报告目录
│ ├── 2b701776-01f1-46be-8ba5-d7b61204a8f7-container.json
│ ├── 4ca1486b-779f-4c54-828f-a573c186cd9d-result.json
│ ├── adf62f1b-6068-4562-b9c3-219365ebae34-result.json
│ ├── ae3c6865-75d4-4a56-9715-d413fe4163b1-container.json
│ └── edae50e2-8676-4049-a61f-e0eb46e23181-result.json
├── svnUtils.py //SVN相关命令
└── 掉落表.xlsx //配置表demo
技术栈
语言:Python3
测试框架:pytest
测试报告框架:allure
Excel文件处理:openpyxl
数组与矩阵运算:numpy
文件路径处理:pathlib
Python执行lua代码:lupa
多进程:subprocess
集成工具:Jenkins
版本控制:Git,SVN
Demo数据
OS:MacOS11.6.1
python版本:3.6.9
- 配置表demo
- 测试用例demo
@allure.feature("cfgDemo")
class TestCase_301():
@classmethod
def setup_class(cls):
cls.get_config_table = GetConfigTable()
cls.all_sheet = cls.get_config_table.get_all_sheet('cfgDemo.xlsx')
cls.rule = CHECK_RULE_BASE
@allure.story('baseColumn')
def test_baseColumn(self):
check_model = {
"id": [('check_always_add_rule'), ('check_field_range', {'max_value': 11019, 'min_value': 10001})],
"type": [('check_value_equal', {'assert_value': 1})],
"award": [('check_lua_table')],
}
self.rule.start_test_table(check_model, self.all_sheet["baseColumn"])
@allure.story('money')
def test_money(self):
check_model = {
"id": [('check_always_add_rule'), ('check_field_range', {'max_value': 20, 'min_value': 0})],
"itemID": [('check_always_add_rule'), ('check_field_range', {'max_value': 11019, 'min_value': 10001})],
}
self.rule.start_test_table(check_model, self.all_sheet["money"])
- 检查方法Demo
第二篇会对每个检查方法进行说明
def check_field_repeat(self,field_name,field_data,none=False):
'''
重复值检查
:return:
'''
index_data = None
if none:
field_data = [i for i in field_data if i != None and i != ""]
counter_data = dict(Counter(field_data)).values()
try:
len_data = len(list(set(counter_data)))
index_data = list(set(counter_data))[0]
assert len_data == 1
assert index_data == 1
except :
pytest.assume(len_data == 1)
pytest.assume(index_data == 1)
allure.attach(json.dumps({'value': index_data,'字段':field_name},
ensure_ascii=False), '重复数据', allure.attachment_type.JSON)
-
Jenkins-配置表检查工程
-
测试报告
-
测试报告
欢迎小伙伴关注微信公众号ID:gameTesterGz
或关注我的CSDN:https://blog.csdn.net/qq_32557025
谢谢各位的关注、点赞!