iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python 测试工具
  • 164
分享到

python 测试工具

测试工具python 2023-01-31 02:01:07 164人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

          对WEB服务做PerfORMance & Load测试,最常见的工具有Apache Benchmark俗称ab和商用工具LoadRunner。ab简单直接,功能也相对较弱,但我们经常看到的对一些Web serve


          对WEB服务做PerfORMance & Load测试,最常见的工具有Apache Benchmark俗称ab和商用工具LoadRunner。ab简单直接,功能也相对较弱,但我们经常看到的对一些Web server或者Framework的性能测试用的ab做的,

   而LoadRunner功能也确实很强大,各种大型软件公司、软件外包企业几乎是必备了,用起来很High,当然其价格也确实很High 

这里要介绍的multi-mechanize 是一款用python开发的Performance & Load测试工具,是由Pylot的作者新近开发的,算是升级换代的产品。用multi-mechanize可以通过编写python脚本来实现较复杂的测试逻辑,其并发测试是通过multiprocessing(多进程)和多线程机制来实现的。

1. 安装

万能的pip&easy_install

pip install multi-mechanize mechanize numpy matplotlib

  • mechanize是一个模拟browser行为的一个库,当然你也可以用其它的如urllib2、request、tornado.Httpclient等等库,不是必须。

  • 后面两个numpy和matplotlib也是可选的,当你需要它自动生成图形化报表时才会用到,安装matplotlib你的系统有可能需要安装libpng和freetype库。

2. 使用方法

    multimech-newproject my_project

自动创建一个my_project目录,子目录test_scripts用来放测试脚本,config.cfg是测试配置,主要要配的是测试时间、测试脚本和并发threads量。

  • 脚本编写,借用官方的一个简单例子:

  • #  Copyright (c) 2010 Corey Goldberg (corey@goldb.org)
    #  License: GNU LGPLv3
    #
    #  This file is part of Multi-Mechanize
    #
     
    import mechanize
    import time
     
    class Transaction(object):
        def __init__(self):
            self.custom_timers = {}
     
        def run(self):
            br = mechanize.Browser()
            br.set_handle_robots(False)
     
            start_timer = time.time()
            resp = br.open('http://www.example.com/')
            resp.read()
            latency = time.time() - start_timer
     
            self.custom_timers['Example_Homepage'] = latency
     
            assert (resp.code == 200), 'Bad HTTP Response'
            assert ('Example Web Page' in resp.get_data()), 'Failed Content Verification'
     
    if __name__ == '__main__':
        trans = Transaction()
        trans.run()
        print trans.custom_timers



注意:按multi-mechanize的默认规则,每个脚本必须有一个Transaction的类,类要有一个run方法,在run里面写测试业务逻辑。这个例子是打开http://www.example.com,记录访问所耗时长,非常简单明了,而实际的场景你可能需要有用户登录、然后测试某个或多个页面(api),只是测试业务复杂一些,写法是类似的。一个脚本文件只能有一个Transaction的类、类也只能有一个run方法,写起case来是不是觉得非常不方便?不用急,针对这点,后面的小技巧部分会另辟蹊径给你指条明路。

  • 运行项目的测试脚本

multimech-run my_project

测试结果报表和原始数据将放到results目录下按测试时间生成的子目录中,生产的html版本的结果统计如下图所示:

3. 使用小技巧

  • Cookie:

如果使用的是mechanize,可以通过下面的方式,从上面的browser对象br里获取到cookie信息。

br._ua_handlers["_cookies"].cookieja

# -*- coding: utf-8 -*-
 
import mechanize
import time
import traceback
import logging
 
class BaseTransaction(object):
    _TEST_CASE_PREFIX = "test_"
 
    def __init__(self):
        self._init()
 
        self.custom_timers = {}
 
        self.browser = mechanize.Browser()
        self.browser.set_handle_robots(False)
        self.browser.set_handle_redirect(True)
        self.browser.set_handle_referer(True)
 
    def _init(self):
        self.funcs = []
        funcs_ = dir(self)
        for func_ in funcs_:
            if func_.startswith(self._TEST_CASE_PREFIX):
                self.funcs.append(func_)
 
    def run(self):
    """"所有继承BaseTransaction的类,只需要在以test_开头的方法里实现测试case即可,运行时多个case都可以得到测试"""
        try:
            for func in self.funcs:
                start_timer = time.time()
                getattr(self, func)()  # run test
                latency = time.time() - start_timer
 
                self.custom_timers['%s' % func[len(self._TEST_CASE_PREFIX):]] = latency
        except Exception, e:
            logging.error(traceback.format_exc())
            raise e
#test_case_google.py里是真正的测试case,这里是同时测试多个google站点:
# -*- coding: utf-8 -*-
 
from base import BaseTransaction
 
class Transaction(BaseTransaction):
 
    def test_google_com_hk(self):
       #  测试逻辑代码,如类似于上面的测试example.com
        pass
 
    def test_google_com_sg(self):
        pass
 
    def test_google_com(self):
        pass



  • 真实的并发量计算:multi-mechanize使用了multiprocessing库,会同时起多个进程,且每个进程按config里的配置起多个线程来实现并发测试,但真正的单位时间内的并发量并不是config里设置threads=10这样的表示每秒10个并发,真实的并发量需要根据最终完成的transaction数和这些transaction里面包含多少次http请求和总的完成时间来计算得知,这点不是很直观。

  • 自定义统计数据:你可以往self.custom_timers这个内建的字典里塞任意的自定义统计数据,他们在报表中都能够得到体现。

       更多的文档和一手资料请参考文档http://testutils.org/multi-mechanize/和git代码库https://GitHub.com/cgoldberg/multi-mechanize 。最后multi-mechanize还不是很好用,一是使用过程中发现有一些情况会抛异常,导致不能正确生成报表,另一个别扭的是case的编写不是unittest那一套,是作者自创Transaction流:)


--结束END--

本文标题: python 测试工具

本文链接: https://www.lsjlt.com/news/185565.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python 测试工具
              对Web服务做Performance & Load测试,最常见的工具有Apache Benchmark俗称ab和商用工具LoadRunner。ab简单直接,功能也相对较弱,但我们经常看到的对一些Web serve...
    99+
    2023-01-31
    测试工具 python
  • 【DNS】测试工具
    https://www.17ce.com/http://ce.cloud.360.cn/ ...
    99+
    2023-06-04
  • app测试工具
    app测试工具:1、Appium;2、Airtest;3、uiautomator2 ;4、Monkey;5、MonkeyRunner;6、Maxim;7、UICrawler;8、GT;9、Perfdog;10、SoloPi;11、QNET;...
    99+
    2023-07-10
  • python的web压力测试工具-pyl
    pylot是python编写的一款web压力测试工具。使用比较简单。而且测试结果相对稳定。 这里不得不鄙视一下apache 的ab测试,那结果真是让人蛋疼,同样的url,测试结果飘忽不定,看得人心惊肉跳,摸不着头脑。 下载 pylot官...
    99+
    2023-01-31
    测试工具 压力 python
  • Python进行自动化测试工具
    在自动化测试里Python用途很广,但是市面上测试工具不是很多,这里主要介绍的是一些Python测试的框架1、单元测试a、unittest、doctest:Python自带的单元测试框架b、pyunit:Junit的Python版本c、py...
    99+
    2023-01-31
    测试工具 Python
  • Python中的测试工具有哪些
    本篇内容介绍了“Python中的测试工具有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!当我们在写程序的时候,我们需要通过测试来验证程序...
    99+
    2023-06-16
  • 常用测试工具-----Ixchariot
    1.1、Ixchariot简介   IxChariot是针对应用层性能测试的一款测试工具。能够评估网络应用的性能和容量,得到网络在不同应用、不同参数下的吞吐量、时延、丢包、等性能情况。 1.2、Ixchariot用途 可以进行网络维护,性能...
    99+
    2023-10-08
    测试工具 网络 服务器
  • python中有哪些接口测试工具
    python中有哪些接口测试工具?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1、接口测试工具(1)Apache JMeter:主要应用于WEB应用程序的负荷测...
    99+
    2023-06-15
  • java测试工具有哪些
    java的测试工具有:1.MaxQ,轻量级的Web功能测试工具;2.SilkPerformer,企业级负载测试工具;3.Junit,java程序的测试框架;4.Jtest,针对java的自动化白盒测试工具;5.Hansel,覆盖率测试工具;...
    99+
    2024-04-02
  • Java常用测试工具大全
    目录第一部分:九款性能测试Java入门Java测试工具1.Arquillian2.JTest3.The Grinder4.TestNG5.JUnit的6.JWalk7.Mockito...
    99+
    2024-04-02
  • IO测试工具fio怎么用
    IO测试工具fio怎么用,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。fio工具安装及使用https://www.cnblogs.com/amused/p/11104161...
    99+
    2023-06-05
  • 网络性能测试工具 iperf3
    iperf3软件下载地址:https://liyouchen.lanzoul.com/iZmaI0otb1de 下载到电脑到,并解压后,会得到两个文件:cygwin1.dll 和 iperf3.exe,这两个文件拷贝到 c:\wi...
    99+
    2023-09-18
    服务器 运维 Powered by 金山文档
  • PHP中的安全测试工具
    随着互联网和网络的普及,对于网站和应用程序开发的需求不断增加。而随之而来的安全问题也越来越严重。为此,PHP开发人员需要始终保持对网站和应用程序的安全性进行测试的意识。安全测试工具通常是PHP开发工具包中的重要组成部分,提供协助定位和解决安...
    99+
    2023-05-23
    工具 安全测试 PHP编程
  • PHP中的压力测试工具
    PHP是一种广泛用于Web开发的脚本语言,它被用于开发许多大型的网站和应用程序。在PHP应用程序开发的过程中,性能优化和压力测试是非常关键的,因为这将有助于你确保应用程序在实际运行过程中能够承受高负载的用户流量,而不会出现性能问题或系统崩溃...
    99+
    2023-05-23
    工具 PHP 压力测试
  • PHP中的测试报告工具
    PHP是一种常见的开源编程语言,广泛应用于Web开发中,它的优点就在于易学、易用、可拓展性强等优点。而作为开发者,我们为了在保证代码质量的同时提高开发效率,必不可少的就是测试和测试报告的使用。在PHP开发中,有很多测试和测试报告工具,其中最...
    99+
    2023-05-24
    PHPUnit Codeception Reportify
  • cypress测试工具如何使用
    本篇内容主要讲解“cypress测试工具如何使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“cypress测试工具如何使用”吧!一、什么是cypressCypress称自己是下一代的web前端...
    99+
    2023-06-30
  • PHP中的测试集成工具
    PHP是一种流行的服务器端脚本语言,广泛应用于Web开发中。由于PHP的开源特性和灵活性,它在快速开发和维护大型Web应用程序方面得到了广泛认可。测试对于Web应用程序的开发和部署至关重要,因为它可以确保应用程序在各种情况下具有稳定和一致的...
    99+
    2023-05-23
    集成 PHP 测试工具
  • python自动化测试工具Helium使用示例
    目录前言示例总结前言 Helium工具是对Selenium的封装,将Selenium工具的使用变得更加简单。Selenium虽然好,但是在它的使用过程中元素的提取还是比较复杂的,不论...
    99+
    2024-04-02
  • python中Airtest自动化测试工具怎么用
    小编给大家分享一下python中Airtest自动化测试工具怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Airtest的官网介绍项目构成Airtest:是...
    99+
    2023-06-29
  • PHP中的性能测试工具
    随着互联网的发展,PHP已经成为一种非常流行的编程语言,被广泛应用于Web开发。由于PHP的灵活性和易用性,它已经成为许多企业和开发者的首选语言。但是,PHP在性能方面也存在许多问题,尤其是在高并发的情况下。为了解决这些问题,PHP中提供了...
    99+
    2023-05-24
    PHP 性能测试 工具
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作