前情分析:

1. 当前被测系统被分为前端,调度层和数据层。每一层都有单独测试脚本进行测试。

2. 测试脚本没有进行统一管理,使用方式各异,且没有统一的文档对测试脚本进行解释。

3. 测试节点十几个,每个节点都需要进行部署,没有对测试脚本进行统一的管理。

完成封装后的效果:

1. 所有脚本都统一通过命令行进行调用 例如:test_tools scheduler smoke -h 192.168.1.1 (使用scheduler 下的smoke脚本 对h的参数传入值为192.168.1.1)

2. 所有测试工具都集成进入到test_tools中。可以通过二级参数进行区分调用 (test_tools scheduler smoke 和 test_tools manager smoke 是两个不同的脚本 分属于不同的模块中)

3. 通过对工程进行打包,实现包的分发及版本控制。新增节点安装, 使用pip3 install xxx 即可

具体实现:

主入口文件:test_tools.py

import os
import syssys.path.append(os.path.abspath(os.path.dirname(os.path.abspath(os.path.dirname(__file__)))))import clickfrom tools.app_cmd import commands as group1
from tools.storage_cmd import commands as group2@click.group()
def client():"""欢迎使用工具可以添加参数scheduler、storage、进行查看相关模块的测试工具请使用 '--help' 查看具体传参"""passclient.add_command(group1.scheduler)
client.add_command(group2.storage)if __name__ == '__main__':client()

该文件定义了命令行工具的主入口及二级命令的注入

二级命令菜单commands.py

import click@click.group()
def scheduler():"""调度层测试工具"""pass@scheduler.command()
@click.option('--host', '-h', help='server addr as 10.10.96.10:30100', required=True, type=str)
@click.option('--access', '-a', help='access_id default 1006/1234', required=False, default='1006/1234', type=str)
@click.option('--secret', '-s', help='secret_key default abcd', required=False, default='abcd', type=str)
@click.option('--secure', '-ssl', help='if true use HTTPS connect ', required=False, default=False, type=bool)
@click.option('--filesize', '-size', help='file size default 4k', required=False, default='4k', type=str)
def smoke(host, access, secret, secure, filesize):"""调度层冒烟测试"""hosts = host.split(',')pool = Pool(len(hosts))for h in hosts:logger.info(f'host={h}, access={access}, secret={secret}, secure={secure}, fileSize={filesize}')pool.apply_async(app_smoke, (h, access, secret, secure, filesize,))pool.close()pool.join()

该文件定义了二级命令scheduler ,将smoke方法注入到scheduler中同时通过@click.option将所需要的参数从外部注入到smoke方法中

setup.py(打包文件)

from setuptools import setup,find_packagessetup(name='test-tools',version='2.5.5',description=' test tools',author='Tester',author_email='4@163.com',url='online.net',keywords='test_tools',platforms='Linux',# project_urls={#       'Documentation': 'https://packaging.python.org/tutorials/distributing-packages/',#       'Funding': 'https://donate.pypi.org',#       'Source': 'https://github.com/pypa/sampleproject/',#       'Tracker': 'https://github.com/pypa/sampleproject/issues',# },packages=find_packages(include=['Application','Application.*','Common','Common.*','Config','Config.*'],),include_package_data=True,py_modules=['Config.app_case'],# install_requires=['numpy>=1.14', 'tensorflow>=1.7'],python_requires='>=3',install_requires=['Click','pyyaml','func-timeout','ddt','colorlog','openpyxl','prettytable','paramiko'],entry_points='''[console_scripts]iceberg=tools.iceberg:client''',exclude_package_data={'bandwidth_reporter': ['*.pyc']}
)

MANIFEST.in(打包文件)

recursive-include Config/ *.ini
recursive-include Driver/function/RPCplus/ *.bin

在setup.py中 主要是对打包的信息进行了说明 其核心代码为entry_points 通过该命令可以将test_tools注入到系统命令行。MANIFEST.in中的recursive-include主要说明除去py文件 还应该打包那些文件。

完成以上代码编写后 ,可以通过一下命令完成打包操作

python -m setup check #先检测下setup本身是否有语法侧面错误python -m setup build #编译文件python -m setup sdist #打包

打包完成后,对应的文件在当前目录下dist文件夹中生成对应的tar压缩文件

使用pip3 install xxx。tar安装即可

遇到的坑:

  1. 使用click 子命令最多可以添加20个子命令 再多就不展示了
  2. 使用click.option 进行传参时 其中--xxx 中的xxx为下方方法的入参名  一定要保持一致  否则不认
  3. click中如果不是必填, 建议给个非空的默认值,方便调试
  4. 涉及到路径参数,不要使用click内置的类型去判断 直接使用type=str 进行解析
  5. 工程内文件夹都使用package 否则不会被setup 打包
  6. MANIFEST.in 内文件一定要有扩展名 直接写文件名好像不生效
  7. 配置文件尽量写到固定目录 ,然后手动去修改  否则你要一遍一遍的去系统目录找配置   神烦
  8. 在linux 中,setup成功 但是无法使用test-tools命令 解决办法:确认当前python3版本,使用whereis python3命令 查找python3的目录 逐一查找是否包含当前版本的python3.如果包含 查看其中的bin目录是否存在iceberg可执行文件 .如果存在 则编辑/etc/profile 增加一行export PATH="/usr/local/nginx/sbin/:$PATH"       source  /etc/profile

打包部分参考了打包带资源文件的Python项目到pypi_piglite的专栏-CSDN博客_python 打包 资源文件

使用click进行对测试工具进行封装相关推荐

  1. 常见测试工具总结:LR、Selenium

    文章目录 前言 一.Selenium 1.Selenium是什么 2.常见的API 3.unittest框架 二.LoadRunner 1.LoadRunner的使用 三.禅道 禅道的使用 总结 前言 ...

  2. Python开发测试工具(一)—Monkey

    文章首发:我的博客 背景 最近在测试安卓的时候,经常会用到Monkey,Monkey作为安卓的基础工具,必须要到命令行去敲敲敲,做起来非常非常麻烦,于是我就想能不能利用学会的Python知识直接开发一 ...

  3. Ubuntu18.04下安装NVIDIA显卡驱动、docker、nvidia-docker;容器中编译安装opencv-4.4.0与darknet-yolov4并完成测试;容器封装镜像转移。2022

    记录一下第一次在CSDN发博客,欢迎大家光临~ 文章目录 前言 一.宿主机配置 1.安装Ubunntu18.04 64位系统 2.为宿主机系统更换国内软件源Ubuntu 官方源服务器在欧洲,国内访问很 ...

  4. axt测试软件,【测试工具】这些APP实用测试工具,不知道你就out了!

    本期,我将给大家介绍14款实用的测试工具,希望能够帮到大家!(建议收藏) UI自动化测试工具 1. uiautomator2 Github地址:https://github.com/openatx/u ...

  5. 自动化测试测试工具 AirTest 的使用方法与简介

    AirtestIDE是一款适用于游戏和应用程序的跨平台UI测试自动化集成开发环境(IDE),为移动应用程序开发人员和测试人员提供了广泛的工具,可在便利且易于使用的环境中编写全自动测试脚本. 相比较其他 ...

  6. 微信公众帐号开发教程第6篇-消息及消息处理工具的封装

    本篇内容主要讲解如何将微信公众平台定义的消息及消息相关的操作封装成工具类,方面后期的使用  官方文档 接下来要做的就是将消息请求.回复中定义的消息进行封装,建立与之对应的Java类(Java是一门面向 ...

  7. WebRTC通话质量调优:三个弱网模拟测试工具的使用与对比

    作为一个使用 WebRTC 独立开发者或团队,怎样才能知道自己 App 的通话质量已经"达标"了呢?如何进行合理的弱网模拟测试?介绍给开发者们三个开源工具的部署.使用方法,及其各自 ...

  8. http 测试工具_20+最好的开源自动化测试工具

    本文开始逐步的降低公众号更文频率,提升文章质量,帮忙多点点文章末右下角的"好看"支持下,也可以将本文分享到朋友圈或你身边的朋友,谢谢 最佳开源自动化工具有哪些呢? 在本文中,整理了 ...

  9. java 测试工具 oracle_几种测试工具的简单介绍

    负载测试(Load Test):负载测试是一种性能测试,指数据在超负荷环境中运行,程序是否能够承担. 二.WinRunner WinRunner 是一种企业级的功能测试工具,用于检验企业应用程序是否能 ...

最新文章

  1. 有关EUV光刻机,你需要知道这些
  2. 未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序
  3. 【转】DCT变换的透彻解析
  4. 提高物联网安全性的简单方法
  5. 力扣645.错误的集合
  6. 大数据在企业中起到什么作用
  7. Hibernate缓存研究
  8. 如何取消github邮件订阅
  9. Python str转为list list转为str
  10. java中负数_Java中负数以及类型转换问题
  11. O'Reilly Java系列书籍建议阅读顺序(转自蔡学庸)
  12. 蚂蚁区块链第8课 如何创建新的账户,获取私钥和identity标识?
  13. 2021-SZTU第一届acm校赛总结
  14. 批量文件压缩下载(zip)
  15. ----- 前端面试题 -----
  16. 远程连接服务器显示:发生身份验证错误 要求的函数不受支持
  17. 项目时间管理的几种方法
  18. 互联网公益:回归初心
  19. 从键盘接收一百分制成绩( 0~100),要求输出其对应的成绩等级 A~E。其中,90 分以上为'A',80~89 分为'B', 70~79分为'C', 60~69分为'D', 60 分以下为'E'。
  20. 保姆级Red Hat没有yum命令、报错This system is not registered to Red Hat Subscription Management.

热门文章

  1. Java xml出现错误 javax.xml.transform.TransformerException: java.lang.NullPointerException
  2. 关于OneDrive一直显示“正在登陆”的一种可能解决方法
  3. 教你win10更新失败怎么解决,win10系统更新失败怎么办
  4. VMware在线添加磁盘
  5. 云分享YFX软件合集-开车不是儿戏!这些坏习惯,时时刻刻威胁着你的生命安全
  6. 公众号怎么设置滑动文字_微信公众号滑动文字怎么制作内容呢?
  7. Mac苹果电脑 安装virtualBox
  8. 多个containers 共用一个pvc_长兴PVC废料回收一斤多少钱,ps废料回收
  9. win10 计算机管理器没有ime,win10电脑任务栏输入法初选ime禁用的解决方法
  10. 第14.4节 使用IE浏览器获取网站访问的http信息