项目终于换了方案,改用socket来实现而不是之前的http了,所以测试工具就不能用以前的了,因为测试人手少,逼不得已的必须要挖掘更多的自动化方案来弥补。于是先研究了下python的socket解决方案,最后确定了struct的网络2进制数据读写方法,用python+threading处理后,形成了本地的自动化socket测试方案,该方案的逻辑流程如下图:

实际上,通过配置简单的协议和宏命令组合,就已经可以开始测试了,但为了要和每日集成结合起来,也为了以后的测试数据整合,用例整合更为方便,还是选择将该工具和robotFramework结合起来。

当然结合不是那么简单的拷贝过去,需要针对rf抽取socket工具中的核心模块,这里最关键的就是抽取协议模块、socket模块了,原本就写成了模块化,方便机器人线程调用,所以抽取的时候就很简单了。如下图

从自定义的协议核心模块protocols_struct中,继承tjnetwork过来,重写了关于socket服务器的连接方法,之后就是添加各个协议命令的关键字了,如截图中的test_3方法。

定义了足够的协议方法关键字后,就可以在RF中开始配置测试用例了。如下图,配置足够的环境变量(针对游戏项目必备的登录服务器的ip、端口,逻辑服务器ip、端口)

在测试用例中,将自己的关键字方法添加进去,就组装好了一份简单的登录测试用例,如下图(包含登录,服务器跳转,角色删除、角色建立等)

部分中文关键字的映射如下:

用Robot Framework+python来测试基于socket通讯的C/S系统(网络游戏)的更多相关文章

  1. Robot Framework - 建立本地测试环境

    注意:本文内容是以“在Window7系统中安装本地RobotFrmamework自动化测试环境”为例. Robot Framework简介 HomePage:http://robotframework ...

  2. Robot Framework - 2 - 创建测试库

    04- 创建测试库--基础概念 Robot Framework 实际的测试能力是由测试库提供的. ***** 支持的编程语言 Robot Framework 自身是用 Python 编写的,能使用 P ...

  3. 关于《自动化测试实战宝典:Robot Framework + Python从小工到专家》

    受新冠疫情影响,笔者被“困”在湖北老家七十余天,于4月1号(愚人节)这天,终于返回到广州.当前国内疫情基本已趋于平稳,但全球疫情整体势态仍在持续疯涨,累计确诊病例已近80万人.祈祷这场全球性灾难能尽早 ...

  4. Send Email in Robot Framework Python Using Gmail

    转载自:http://seleniummaster.com/sitecontent/index.php/selenium-robot-framework-menu/selenium-robot-fra ...

  5. 【转】robot framework + python实现http接口自动化测试框架

    前言 下周即将展开一个http接口测试的需求,刚刚完成的java类接口测试工作中,由于之前犯懒,没有提前搭建好自动化回归测试框架,以至于后期rd每修改一个bug,经常导致之前没有问题的case又产生了 ...

  6. robot framework + python实现http接口自动化测试框架

    https://www.jianshu.com/p/6d1e8cb90e7d 前言 下周即将展开一个http接口测试的需求,刚刚完成的java类接口测试工作中,由于之前犯懒,没有提前搭建好自动化回归测 ...

  7. Robot Framework+python的安装,配置,环境搭建(纯白篇)

    弄了大半天 终于把-Robot Framework-弄好了,总是一个发现问题,一个一个去解决的过程,只是时间嘛,咳咳咳咳 言归正传 第一. 记住了 Robot Framework 的库 只支持 pyt ...

  8. 基于Socket通讯(C#)和WebSocket协议(net)编写的两种聊天功能(文末附源码下载地址)

    今天我们来盘一盘Socket通讯和WebSocket协议在即时通讯的小应用——聊天. 理论大家估计都知道得差不多了,小编也通过查阅各种资料对理论知识进行了充电,发现好多demo似懂非懂,拷贝回来又运行 ...

  9. Robot framework+python安装使用图解版

    一.安装包 1.Python2.7(一切的基础,切记安装目录不能有中文不能有空格) 1)python2.7:(python环境):python-2.7.msi 2)setuptools(python包 ...

随机推荐

  1. SDUT-3441_数据结构实验之二叉树二:遍历二叉树

    数据结构实验之二叉树二:遍历二叉树 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 已知二叉树的一个按先序遍历输入的字符 ...

  2. shell爬虫

    #!/bin/bash curl_str='curl -x "http://http-pro.abuyun.com:9010" --proxy-basic --proxy-user ...

  3. 请注意更新TensorFlow 2.0的旧代码

    TensorFlow 2.0 将包含许多 API 变更,例如,对参数进行重新排序.重新命名符号和更改参数的默认值.手动执行所有这些变更不仅枯燥乏味,而且容易出错.为简化变更过程并让您尽可能顺畅地过渡到 ...

  4. oracle函数 nls_charset_id(c1)

    [功能]返回字符集名称参应id值 [参数]c1,字符型 [返回]数值型 sql> select nls_charset_id('zhs16gbk') from dual; nls_charset ...

  5. 微信授权登录-微信公众号和PC端网站

    https://blog.csdn.net/qq_34664239/article/details/79107529 一.微信公众号授权登录——微信公众平台 微信授权登录,并调用后台接口,获取用户信息 ...

  6. CSS属性Display(显示)和Visibility(可见性)

    隐藏一个元素可以通过把display属性设置为“none”,或把visibility属性设置为“hidden”.但是请注意,这两种方法会产生不同的效果. Visibility:hidden可以隐藏某个 ...

  7. display的值和对应的意义

    none:隐藏对应元素,不为隐藏的对象保留其物理空间 block:指定对象为块元素 inline:指定对象为内联元素 inline-block:指定对象为内联块元素 table:指定对象为块元素的表格 ...

  8. Python 3里,reduce()函数已经被从全局名字空间里移除了,它现在被放置在fucntools模块里

    reduce函数:在Python 3里,reduce()函数已经被从全局名字空间里移除了,它现在被放置在fucntools模块里 用的话要 先引入:>>> from functool ...

  9. 安装 NodeJ Koa2、3 + 独立插件 cli脚手架 npm cnpm Vue

    安装  NodeJ  npm  cnpm   Koa2.3 + 独立插件  cli脚手架    Vue 安装 在 这里写过了  这两个分开了写  Nodej:下载 node.js  安装  10.0版 ...

  10. Codeforces Round #186 (Div. 2)

    A. Ilya and Bank Account 模拟. B. Ilya and Queries 前缀和. C. Ilya and Matrix 考虑每个元素的贡献. 边长为\(2^n\)时,贡献为最 ...