配置表测试框架搭建-①介绍篇

本文是关于游戏策划配置表测试框架的开篇,介绍所使用的技术栈和落地应用。通过Python、pytest等工具,实现配置表的通用检查,并预留接口方便扩展。文章分为多个章节,详细讲解数据提取、测试方法编写、用例生成、测试执行及报告生成等步骤,最终将集成到Jenkins中。
摘要由CSDN通过智能技术生成

前言

这篇为游戏策划配置表测试系列的开篇,主要介绍的这个框架用到的技术栈,落地后的应用成果。原本的想法是把策划的数值参考表当做期待值,与配置表的配置数据进行断言,由于各个项目组的数值参考表不太统一,实现起来成本较大,所以打算先实现第一版,先做通用的检查,把框架搭起来;预留接口后续需要期望值断言的时候可以快速拓展。
阅读提示: 第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
谢谢各位的关注、点赞!
微信二维码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

游戏测试-AJian

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值