又一个弹药制造者

yapam的Python项目详细描述


testsbuildcodecovPython 3.5Python 3.6Python 3.7Python 3.8

雅帕姆

Yapam是一个旨在简化使用Yandex Tank的过程的工具

编辑工具配置,它会自动创建弹药,你可以使用你的测试。 目前,它只能制造幻影类型的弹药。如果你需要测试的应用程序不是无状态的-也许你应该这样做 另寻出路。在

我与坦克或Yandex本身没有任何关系,但他们所做的伟大工作给我留下了深刻的印象。在

备注

对于任何项目,迟早都会出现这样的问题:

 What load can it handle? 
 Which handlers are slow? 
 What exactly happens if you increase the number of application instances?

你的第一个想法可能是I should use one of the stress testing tools!,但是如果你没有同事 如果你能做到这一点,那么任务就落在你肩上了。在我看来,Yandex坦克是一个简单方便的方法 做这种类型的任务(据我所知,这是免费和开源的)。 正确的方法是看公文,但是。。。 好的,如果你想尽快完成,这里有一个小Python脚本,它将生成所有你需要生成的坦克射击。在

安装

您的Python版本应该是3.5或更高版本。只需使用Python包管理器(如pip)进行安装: pip install yapam

配置

配置文件应为扩展名为.JSON的JSON类型文件。在

配置选项:

LOG_DATE_FMT:内部日志的日期格式

LOG_FMT:内部日志记录格式(与Python基本日志格式相同)

LOG_LVL:日志级别(与Python基本日志级别相同)

AMMO_FILE:保存结果的文件的路径

REQUESTS:拍摄请求列表

示例:

^{pr2}$

使用

创建本地跑步者,例如应用程序副本

# -*- coding: utf-8 -*-

import argparse
import sys
from distutils.util import strtobool

from yapam.armory import Armory
from yapam.config import AmmoConfig


def parse_args():
    """Script arguments parser."""
    parser = argparse.ArgumentParser()
    parser.add_argument('--config', default='config.json', type=str,
                        help='Path to configuration file, ex: config.json')
    parser.add_argument('--template', default=False, type=strtobool, nargs='?', const=True,
                        help='Create config template')
    return parser.parse_args()


def main():
    args = parse_args()

    if args.template:
        cfg = AmmoConfig()
        cfg.log.debug('Trying to create a template of configuration file.')
        cfg.create_template(args.config)
        cfg.log.debug('Exit.')
        sys.exit(0)

    try:
        user_config = AmmoConfig(args.config)
        user_config.log.debug(f'Configuration file loaded: {user_config.public_attrs()}')

        armory = Armory(user_config.requests, user_config.ammo_file, user_config.log)
        armory.generate_ammo()
    except (AssertionError, FileExistsError) as error_msg:
        user_config.log.critical(str(error_msg))
        sys.exit(1)

    sys.exit(0)


if __name__ == '__main__':
    main()

为将来的配置文件创建模板

python app.py --template

编辑配置文件

跑步

python app.py或{}

用你的弹药射击坦克!

我什么都看了,但还是什么都不懂。告诉我一个超短的方法来管理整个事情?在

Try this

这里有一些官方文件的链接

https://yandex.ru/dev/tank/

https://yandextank.readthedocs.io/en/latest/

https://gist.github.com/sameoldmadness/9abeef4c2125bc760ba2f09ee1150330

https://www.youtube.com/watch?v=gws7L3EaeC0

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java无法将自定义数据类型转换为字符串?   JavaLog4j和appender,这个Log4j定义正确吗?   用于换行的java Android Eclipse拆分   与某个方法关联的java启用/禁用JButton   java小部件列表视图加载视图   java国家/地区名称中的正则表达式   从Java调用Kotlin时,如何获取错误的行号?   java将视图传递给AsyncTask以访问findViewById   java SQL性能:多个绑定还是绑定到一个SQL变量以供重用?   BluetoothAdapter上的安卓 Java NullPointerException。isEnabled()   在clojure中取消引用java方法   JAVA网SocketException:IP_添加_成员身份失败(硬件筛选器不足?)   java从类对象的方法接收nullpointer异常   java使用for循环创建多个对象   java无法使用NTLM身份验证apache camel cxf   java Eclipse不喜欢@Override注释   java Spark SQL模拟红移(Oracle)“系统日期”或“当前日期”