`
jaczhao
  • 浏览: 86878 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

测试相关

 
阅读更多
--------------------------------------------
#!/usr/bin/py-thon
# -*- cod-ing: UTF-8 -*-

im-port logging
im-port os
im-port socket
im-port subprocess
im-port time
im-port ConfigParser


cl-ass UDPClient(object):
    logger = logging.getLogger('test.udp_client')

    de-f __init__(self, socket_timeout=3):
        self.socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        self.socket.settimeout(socket_timeout)

    de-f send(self, msg, address, wait_time=0, buff_size=163840):
        if isinstance(msg, unicode):
            msg = msg.encode()
        self.socket.sendto(msg, address)
        self.logger.debug('Send %s' % msg)
        try:
            pre_data, address = self.socket.recvfrom(buff_size)
            data = pre_data.decode('utf-8')
        except socket.timeout:
            if msg != 'init':
                self.logger.warn('Receive message time out for: %s', msg)
            data = ''
        except Exception as ex:
            if msg != 'hello':
                self.logger.error('Receive message error for: %s. %s', msg, ex)
            data = ''
        if wait_time > 0:
            time.sleep(wait_time)
        self.logger.debug('Receive: %s' % data)
        return data

    de-f close(self):
        self.socket.close()


cl-ass TestTool(object):
    case_logger = logging.getLogger('case')

    def __init__(self):
        self.client = UDPClient(socket_timeout=60)
        self.client_ui = UDPClient()
        self.address = self._init_address()
        self.game_process = None

    @staticmethod
    de-f _init_address():
      -  path = os.path.join(os.path.dirname(__file__), 'dut', 'port.ini')
        if os.path.isfile(path):
            cf = ConfigParser.ConfigParser()
            cf.read(path)
            host = cf.get("address", "host")
            port = cf.getint('address', 'port')
            return host, port

        return '127.0.0.1', 5555

    de-f close_udp(self):
        self.client.close()
        self.client_ui.close()
        self.client = UDPClient(socket_timeout=60)
        self.client_ui = UDPClient()

    de-f logger_info(self, msg):
        self.case_logger.info(msg)

    de-f _logger_exam(self, info):
        self.client.send('[LOG]' + info, self.address)

    de-f set_file_logger(self, path):
        logging.basicConfig(level='INFO',
                            format='[%(asctime)s]<pid=%(process)d tid=%(thread)d>%(levelname)8s - %(message)s')
        handler = logging.FileHandler(path, 'a')
        logging.root.addHandler(handler)
        self.case_logger.info('Begin Test:' + time.asctime(time.localtime()))

    de-f case_start(self, info):
        self.init_dut()
        self._logger_exam('[CASE][START] %s' % info)

    de-f case_finished(self, info):
        self._logger_exam('[CASE][FINISHED] %s' % info)

    de-f case_failed(self, info):
        self._logger_exam('[CASE][FAILED] %s' % info)

    de-f send_cmd(self, cmd):
        return self.client.send(cmd, self.address)

    de-f start_dut(self):
        os.system(os.path.join(os.path.dirname(__file__), 'killdut.bat'))

        game_path = os.path.join(os.path.dirname(__file__), 'dut')
        self.game_process = subprocess.Popen(os.path.join(game_path, 'dut.exe udp'), shell=True, cwd=game_path)
        self.wait_dut_start()
        self.init_dut()

    de-f wait_dut_start(self):
        for x in xrange(60):
            time.sleep(1)
            if self.client_ui.send('hello', self.address) != '':
                break

    de-f init_dut(self):
        self.client_ui.send('init', self.address)

    de-f stop_dut(self):
        self.send_cmd('quit')
        time.sleep(2)
        self.close_udp()
        os.system(os.path.join(os.path.dirname(__file__), 'killdut.bat'))


tool = TestTool()

分享到:
评论

相关推荐

    软件测试 相关模板

    下面将详细讨论与软件测试相关的几个重要知识点,这些知识点与提供的文件紧密关联。 1. **测试计划**: - **测试计划模板.doc**:测试计划文档是整个测试活动的蓝图,它详细描述了测试的目标、范围、策略、资源、...

    软件测试相关总汇

    这个压缩包文件“软件测试相关总汇”包含了丰富的资源,旨在帮助我们深入理解和掌握软件测试的各个方面,无论是为笔试、面试做准备,还是提升自身的理论基础知识。 首先,让我们探讨一下软件测试的基础理论。软件...

    软件测试相关文档

    测试相关文档是这一环节的重要组成部分,它们提供了测试工作的指导和依据。本文将深入探讨“测试用例”、“测试计划”和“测试报告”这三种主要的测试文档,以及它们在实际项目中的应用。 首先,测试用例是详细描述...

    软件测试相关各种文档模版

    本压缩包“软件测试相关各种文档模版”包含了全面的测试文档资源,下面将详细介绍其中可能包含的重要知识点: 1. 测试计划文档(Test Plan):测试计划文档定义了测试的目标、范围、策略、资源、时间表和预期结果。...

    软件测试相关资料

    本压缩包“软件测试相关资料”包含了多个文档和章节,涵盖了软件测试的基础理论和实践方法,对于学习和理解软件测试有着极大的帮助。 121801.docx和121101.docx可能是两份关于软件测试的不同主题或阶段的文档,可能...

    自动化测试相关文档

    这个名为"自动化测试相关文档"的压缩包文件显然包含了关于如何实施和管理自动化测试的详细资料。以下是对这些潜在内容的深入解析: 1. **自动化测试基础**:文档可能涵盖自动化测试的基本概念,解释其与手动测试的...

    软件测试相关内容详解和实例(第一部份)

    "软件测试相关内容详解和实例(第一部分)"这个标题暗示了我们将深入探讨软件测试的各个方面,并通过实例进行说明,使理解更加直观和深入。 首先,软件测试的目标是为了发现程序中的错误、缺陷和漏洞,确保软件的功能...

    单元测试相关文档两则_wwt

    单元测试是软件开发过程中的重要环节,它主要针对软件中的最小可测试单元——函数、方法或类进行验证,确保它们按预期工作。本压缩包包含两份关于单元测试的文档,分别为“单元测试.doc”和“单元测试基础知识.mht”...

    测试相关文档

    "测试相关文档"这个主题涵盖了多个测试领域的关键文件,包括测试计划、测试方案、功能测试报告、性能测试报告以及系统测试报告。这些文档是软件测试过程中不可或缺的部分,它们详细记录了测试的目标、方法、结果以及...

    自动化测试测试相关论文打包

    本压缩包包含了一系列与自动化测试相关的论文,涵盖了多个角度和深度,以下是这些论文主题的详细解析: 1. "手机自动化测试系统设计浅析":这篇论文专注于探讨手机应用的自动化测试系统的设计。它可能涵盖了如何...

    测试相关书籍

    本压缩包文件“测试相关书籍”包含了丰富的资源,旨在帮助测试人员提升技能,无论是初学者还是经验丰富的专业人士,都能从中受益。以下是其中可能涉及的一些核心测试知识点: 1. **测试基础**:初级测试讲解通常会...

    项目测试相关文档

    这个压缩包文件名为"项目测试相关文档",很显然包含了一系列与测试工作相关的资料,可能是测试计划、测试用例、测试报告、缺陷管理等内容。这些文档对于理解项目的测试流程、测试策略以及问题解决方法具有重要意义。...

    软件测试相关学习资料

    《软件测试相关学习资料》是一份专为初学者设计的学习资源,旨在帮助读者全面了解软件开发过程中的测试阶段。在软件工程中,测试是至关重要的一个环节,它确保产品的质量,减少bug,提升用户体验。本资料集合将带你...

    关于云测试相关的文档

    自己搜集到的关于云测试相关的参考文档: 互联网自动化测试云平台构建经验分享.pdf 云平台搭建流程总结.pdf 基于云计算平台的软件测试策略.pdf 云计算软件测试平台的构建-曹丽.pdf Linux云计算运维实战:基于...

    c++常见笔试题目和软件测试有关题目

    这份资源,"C++常见笔试题目和软件测试有关题目",显然旨在帮助求职者准备这两个方面的考核。下面将对C++和软件测试的相关知识点进行详细阐述。 **C++知识点:** 1. **基本语法**:C++是面向对象的编程语言,它...

Global site tag (gtag.js) - Google Analytics