游戏测试 python 编写游戏测试机器人客户端 (四)

A_Jian · December 08, 2020 · Last by A_Jian replied at December 10, 2020 · 2605 hits

游戏测试机器人搭建 - 玩家登录

运行机器人

需要导入的模块

@File    :   main.py
@Contact :   512759438@qq.com
@Author  :   Jian
import time
import random
import sys
import pytest
import pykka
import pathlib
from player import Player
  • Player 是第一章里定义的 PlayerActor
  • pytest 后续章节进行用例执行时才用到

定义 Main,检测账号参数

class Main:
    def __init__(self,account:str='test01',server_id:int=1):
        self.server_id = server_id
        self._account = account
        if self._account:
            __ref = Player.start(self._account, f'SERVER_{self.server_id}')
            self.proxy = __ref.proxy()
        else:raise NameError('输入的账号名不符合')
    @property
    def account(self):
        return self._account
    @account.setter
    def account(self,value):
        if not isinstance(value,str) :
            raise NameError('账号名字为字符串类型')
        if len(value) < 1 or len(value) > 6 :
            raise NameError('账号名字长度不能大于6小于1')
        self._account = value

    def __call__(self, remote_fun:str='',*remote_args,remote_count:int=1):
        if isinstance(remote_fun,str):
            for _ in range(remote_count):
                self.proxy.remote_msg(remote_fun,remote_args)
        else:raise TypeError('调用方法名为字符串格式')

    def stop(self):
        self.proxy.on_stop()
  • 我的服务器列表读的是配置表,可自行更改
  • 启动 Player:Player.start(账号,服务器)
  • 设置了账号名 (account) 的类型和字符长度
  • call这里是后续扩展功能remote,在机器人登录后用控制台或者 web 遥控机器人

开始登录

'''登录指定账号'''
send = Main(account=player800,server_id=2)
  • 我先登录 player800 这个账号player1
  • 再用 pycharm 的 console 运行 main.py(也可以直接运行)
  • ‼ 这里的 send 指向 send = Main(account=‘player800’,server_id=2)
    player2

登录成功

  • 运行之后看见输出 “player800 登录成功”,这时机器人已经成功登录上了,再来看看前面用客户端登录的 player800 被挤下线了player3
  • 登录成功后看看运行的 Actor 有几个,用 pykka.ActorRegistry.get_all() 来查看player4
  • 从上面可以看出刚好运行了定义的 3 个 actor
  • 运行之后可以查看玩家的相关信息player6

机器人下线

  • 在 Main 类我定义一个 stop 方法,调用该方法即可player5
  • 当调用 stop 方法后,3 个 actor 依次停止了,最后查询 actor 列表为空

大致的登录演示是这个样子,登录过程需要什么协议和根据返回协议的数据再次发送要根据自己的项目来,接下来的是拓展功能 服务端返回协议自动处理

最后的最后,各位的关注、点赞、收藏、碎银子打赏是对我最大的支持,谢谢大家!
需要源码的小伙伴关注微信公众号 ID:gameTesterGz
或扫描二维码回复机器人脚本即可

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 2 条回复 时间 点赞
A_Jian python 编写游戏测试机器人客户端 (三) 中提及了此贴 09 Dec 00:16

服务端返回协议自动处理 这个连接错了?

锅锅的锅 回复

还没有写完,写的空白链接

A_Jian 关闭了讨论 04 Sep 01:11
需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up