我们在做性能测试主要去看的就是以上四点:错误率,响应时间,tps和rps

当我们使用Python去构建自动化测试框架时,我们用Locust来对接口进行压测,具体写法如下:

首先我们需要在cmd中安装locust,命令:pip install locust

 

 

 

安装好后我们可以通过命令:locust –version查看其安装的版本

 

 

 

接下来我们看代码中具体如何实现对于locust的使用:

from locust import HttpUserfrom locust import task
import os
#我们在做接口自动化测试时,使用的是request对接口发起请求,在这里我们用的是locust中的httpuser对接口进行发起请求
class Opms(HttpUser):
    def on_start(self):
        print("我是一个用户,我启动了")

    def on_stop(self):
        print("我是一个用户,我退出了")
#定义好的接口必须使用task装饰器使其成为一个需要执行的任务,否则的话即使启动了locust也不会将定义好的函数作为一个需要执行的任务
    @task
    def login(self):
        url = "/login"
        with self.client.get(url=url, name="获取登录页", catch_response=True) as res:#下面断言,当我们返回的text中有项目管理则登录成功,反之失败
            if "项目管理" in res.text:
                res.success()
            else:
                res.failure("自定义失败:获取主页失败")

    @task
    def postLogin(self):
        url = "/login"
        data = {
            "username": "libai",
            "password": "opms123456"
        }
        with self.client.post(url, data=data, name="登录", catch_response=True) as res:
            if res.json()["code"] == 1:
                res.success()
            else:
                res.failure("自定义失败:登陆失败")

if __name__ == '__main__':
    os.system("locust -f loginLocust.py --web-host=127.0.0.1")

 

右键启动,或者直接在终端使用命令,

locust -f loginLocust.py --web-host=127.0.0.1

 

 成功启动后我们会在终端看到如图所示

 

  

复制url到浏览器打开网页

 

 

 我们成功启动了locust其中第一行Number of users 是用户数(线程数),Spawn rate(几秒内集合),Host(根URL)。

我们输入50人 在2秒内尝试压测一下登录接口和登录页面

 

 

 启动压测中,这时候我们等待一段时间,当50个线程组全部加压上去后过段时间我们看一下其性能表现,注意一定要等一段时间,因为在一开始线程组没上去时产生的数据并没啥用。

 

 

 

关注其中几个重要的指标,Fails,90%ile,99%ile,以及RPS,通过分析,我们在压测的过程中,产生的错误数<5%只有1%说明错误数是在可控制范围内,再看响应速度,90%的人是2秒和1.3秒,99%的人是4.6秒和3.1秒,其实如果超过3秒已经有点慢了,但是也不是不可以接受,RPS是55.2。这个数据还可以接受说明远没有到性能瓶颈,接下来我们可以继续加大线程数继续压测。

以上就是Python+locust进行的性能测试。

 

 性能测试的几个关注的重点:

 

原文地址:http://www.cnblogs.com/xiaolintongxue1/p/16822504.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性