因为代码量非常少,所以就叫“小框架”吧. 接口非常简陋,但是好处是适配POC脚本的时候很灵活,兼容性高,不需要任何研究成本. 简单来说,你按照自己的想法和习惯开发一个POC验证程序,它只要做到三点,即: 1. 接收一个目标地址字符串作为输入参数. 2. 定义一个名称为 "exploit" 的函数供小框架来调用. 3. 当验证成功时返回一个自定义的字符串作为标志. 就完全可以满足使用小框架的条件了. 针对以上条件再说一下细节. 小框架负责将字符串参数传递给POC程序,逻辑上讲最少要传递目…
在python开发中,我们常常需要执行命令,修改相关信息.那对于初学者来说,python中如何执行命令呢?今天,小编就为大家分享3种python命令执行的方法. 1. 使用os.system("cmd") 在python中,使用os.system("cmd")的最大特点是,其执行时程序会打出cmd在linux上执行的信息. import os os.system("ls") 2. 使用Popen模块产生新的process Popen是现在pyth…
工作中,使用python的requests库进行接口自动化测试是一个比较不错的选择,今天就以某网站的免费接口为例,展示以get请求进行批量执行测试用例.话不多说直接开讲 分析一下接口信息, 请求地址:http://apis.juhe.cn/simpleWeather/query, 请求参数:city和key,都是必传 请求方式:get或post,以下以get为例 返回结果:info,wid等 注意:该网站免费接口每天有请求次数限制,在调试的时候注意下不要超过规定次数,不然只能等到第二天才能使用了…
RPC异步执行命令 需求: 利用RibbitMQ进行数据交互 可以对多台服务器进行操作 执行命令后不等待命令的执行结果,而是直接让输入下一条命令,结果出来后自动打印 实现异步操作 不懂rpc的请移步http://www.cnblogs.com/lianzhilei/p/5977545.html(最下边) 本节涉及最多的还是rabbitmq通信原理知识,要求安装rabbitmq服务 程序用广播topic模式做更好 程序目录结构: 程序简介: # 异步rpc程序 # 博客地址 [第11天博客地址](…
GIL(全局解释器锁) GIL并不是Python的特性,它是在实现Python解析器(CPython)时所引入的一个概念,是为了实现不同线程对共享资源访问的互斥,才引入了GIL 在Cpython解释器中,同一个进程下开启的多线程,同一时刻只能有一个线程执行,无法利用多核优势 python对于计算密集型的任务开多线程的效率甚至不如串行(没有大量切换),但是,对于IO密集型的任务效率还是有显著提升的. GIL原理图 计算密集型:结果肯定是100,因为每一次start结果就已经出来了,所以第二个线程肯…
概念 进程:进程就是一个程序在一个数据集上的一次动态执行过程 程序:代码 数据集:程序执行过程中需要的资源 进程控制块:完成状态保存的单元 线程:线程是寄托在进程之上,为了提高系统的并发性 线程是进程的实体 进程是一个资源管理单元.线程是最小的执行单元 线程和进程的关系 (1)一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程.(2)资源分配给进程,同一进程的所有线程共享该进程的所有资源.(3)CPU分给线程,即真正在CPU上运行的是线程. 进程/线程切换原则:切换的操作者,操…
首先把pip-.tgz 安装包放在 /usr/local 下面,按照顺序先安装pip,再安装python.不要先安装或只安装python,否则很容易出错, cat >>pip-python.sh<<EOF #!/bin/bash func1(){ yum -y groupinstall "Development tools" [ $? -eq ] && yum -y install zlib-devel bzip2-devel openssl-d…
Web框架本质 1.众所周知,对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端 #!/usr/bin/env python # -*- coding:utf-8 -*- #-Author-Lian import socket def handle_request(client): buf = client.recv(1024) client.send("HTTP/1.1 200 OK\r\n\r\n".encode("ut…
在实际项目开发中,业务逻辑层的处理速度往往很快,特别是在开发Socket通信服务的时候,网络传输很快,但是一旦加上数据库操作,性能一落千丈,数据库操作的效率往往成为一个系统整体性能的瓶颈.面对这问题,我们怎么办呢?好,下面我就为大家介绍一种方法:构建SQL池,分离业务逻辑层和数据访问层,让业务逻辑层从低效的数据库操作解脱,以提高系统整体性能. (一)SQL池 SQL池是SQL容器,用于存放业务逻辑层抛过来的SQL语句.SQL池主要提供以下几种方法: 1)internal string Pop()…
在实际项目开发中,业务逻辑层的处理速度往往很快,特别是在开发Socket通信服务的时候,网络传输很快,但是一旦加上数据库操作,性能一落千丈,数据库操作的效率往往成为一个系统整体性能的瓶颈.面对这问题,我们怎么办呢?好,下面我就为大家介绍一种方法:构建SQL池,分离业务逻辑层和数据访问层,让业务逻辑层从低效的数据库操作解脱,以提高系统整体性能. (一)SQL池 SQL池是SQL容器,用于存放业务逻辑层抛过来的SQL语句.SQL池主要提供以下几种方法: 1)internal string Pop()…
怀着鸡动的心情跟大家介绍一款国产开源运维软件TriAquae,轻松帮你搞定大部分运维工作!TriAquae 是一款由国产的基于Python开发的开源批量部署管理工具,可以允许用户通过一台控制端管理上千台远程Linux服务器,开发者根据多年运维经验以及运维工程师日常工作的需求开发了很多实用的功能,该工具非常实用,并且使用简单,分分钟即可完成安装并开始利用TriAquae管理你的网络,此软件还在不断的开发和更新,目前已实现以下功能: •        支持WEB界面,所有以以下功能均以在WEB界面上…
paramiko 远程控制介绍 Python paramiko是一个相当好用的远程登录模块,采用ssh协议,可以实现linux服务器的ssh远程登录.首先来看一个简单的例子 import paramiko #实例化ssh客户端 ssh = paramiko.SSHClient() #创建默认的白名单 policy = paramiko.AutoAddPolicy() #设置白名单 ssh.set_missing_host_key_policy(policy) #链接服务器 ssh.connect…
题目:简单主机批量管理工具 需求: 主机分组 登录后显示主机分组,选择分组后查看主机列表 可批量执行命令.发送文件,结果实时返回 主机用户名密码可以不同 流程图: 说明: ### 作者介绍: * author:lzl ### 博客地址: * http://www.cnblogs.com/lianzhilei/p/5881434.html ### 功能实现 题目:简单主机批量管理工具 需求: 主机分组 登录后显示主机分组,选择分组后查看主机列表 可批量执行命令.发送文件,结果实时返回 主机用户名密…
简介 我们在写用例的时候,单个脚本的用例好执行,那么多个脚本的时候,如何批量执行呢?这时候就需要用到 unittest 里面的 discover 方法来加载用例了.加载用例后,用 unittest 里面的 TextTestRunner 这里类的 run 方法去一次执行多个脚 本的用例.那么前边介绍那么多都是半道开始,半道出家,这篇就带大家从头到尾,一步一步给小伙伴们详细介绍一下. 新建测试项目 1.pycharm 左上角 File>New Projetc>Pure Python,在 locat…
自动化测试过程中,自动化覆盖的功能点和对应测试用例之间的关系基本都是1 VS N,如果每次将测试用例一个个单独执行,不仅效率很低, 无法快速反馈测试结果,而且维护起来很麻烦.在python的单元测试框架unittest中,提供了批量执行的测试用例的方法. 这篇博客,介绍下unittest框架的常用类和方法,以及利用discover()方法批量执行测试用例的方法... 官方文档:unittest单元测试框架 一.unittest框架 首先介绍一下unittest框架和执行测试用例相关的几个模块:…
前言 我们在写用例的时候,单个脚本的用例好执行,那么多个脚本的时候,如何批量执行呢?这时候就需要用到unittet里面的discover方法来加载用例了. 加载用例后,用unittest里面的TextTestRunner这里类的run方法去一次执行多个脚本的用例. unittest模块中的TestLoader类有一个discover方法(Python2.7之后)discover(start_dir, pattern='test*.py',top_level_dir=None)递归查找指定目录(s…
前言 我们在写用例的时候,单个脚本的用例好执行,那么多个脚本的时候,如何批量执行呢?这时候就需要用到unittet里面的discover方法来加载用例了. 加载用例后,用unittest里面的TextTestRunner这里类的run方法去一次执行多个脚本的用例. 一.新建测试项目 1.pycharm左上角File>New Projetc>Pure Python,在location位置命名一个测试工程的名称:yoyotest,然后保存 2.选中刚才新建的工程右键>New>Pytho…
之前写过一个python远程执行命令的脚本,但在一个性能测试中,要将程序批量分发到不同服务器,程序无法使用,再将之前的脚本更新,加入批量上传的功能.之前脚本地址:http://www.cnblogs.com/landhu/p/4961##coding:utf-8 #------------------ #Author:Hu #Created:2016-02-29 #------------------ import paramiko,os,time,sys from optparse impor…
前言 我们在写用例的时候,单个脚本的用例好执行,那么多个脚本的时候,如何批量执行呢?这时候就需要用到unittet里面的discover方法来加载用例了. 加载用例后,用unittest里面的TextTestRunner这里类的run方法去一次执行多个脚本的用例. 一.新建测试项目 1.pycharm左上角File>New Projetc>Pure Python,在location位置命名一个测试工程的名称:yoyotest,然后保存 2.选中刚才新建的工程右键>New>Pytho…
python多线程使用场景:多线程采集, 以及性能测试等 . 数据库驱动类-简单封装下 mysqlDriver.py #!/usr/bin/python3 #-*- coding: utf-8 -*- # author:zhouchao # mysql 驱动模型类 import pymysql; import traceback; class mysqlDriver: host="localhost"; user="root"; password="&qu…
今天开始批量执行用例~,场景是这样的: 工作中我们可能有多个模块文件(.py)这些文件根据不同的业务类型或功能,测试案例分布在不同的模块文件下.前面的小示例中,我们的测试用例都是在一个文件中,直接运行的测试套件~,开发阶段或者调试阶段这样做是没毛病的,但是如果是测试运行阶段,我们不可能这个模块文件下的用例执行完毕后,切换另一个模块中的用例继续执行.所以我们需要用的批量执行多个模块文件的测试用例. 首先第一个用例模块的案例是这样的~ import unittest #导入unittest库 fro…
MySQL数据库有一个自动提交事务的概念,autocommit.含义是,如果开启autocommit, 则每一个语句执行后会自动提交.即一个语句视为一个事务. 在python使用的MySQLdb中,默认是不开启autocommit的.所以,只有在显示commit后,数据库操作才会真正提交.或者在rollback()后,回滚到上一次commit的状态. #!/bin/env python #coding=utf-8 import MySQLdb class MYSQL(object): def _…
import com.google.common.collect.Lists; import org.apache.commons.collections.CollectionUtils; import java.util.List; /** * 拆分结合工具类 * * @author shiwen * @date 2020/12/27 */ public class SplitListUtils { /** * 拆分集合 * * @param <T> 泛型对象 * @param resLis…
出现场景:用discover方法批量执行py文件,出现随机性的报错(有时a.py报错,有时b.py报错...),共同特点:均是打开新窗口后,切换最新窗口,但定位不到新窗口的元素,超时报错.由于个人项目遇到的是跑一条用例都有1~3个窗口,所以本文针对1~3个窗口的切换随机报错进行处理. 发现错误原因: 我在切换窗口代码的位置,打印当前句柄信息(print(self.driver.window_handles)),如下图 由于经常习惯性认为,新窗口在句柄列表应该是最后一个,即经常用这句代码来切换到我…
使用多线程同时执行多个函数 import time import os import threading def open_calc(): with open('test.txt', 'r') as f: for line in f.readlines(): while 'hello' in line: os.system("calc.exe") # 如果字符串已经出现并已经执行命令,则终止程序,否则会一直执行命令 return # 等for循环判断完没有标识后再休眠重新调用该函数 p…
#!/usr/bin/python3 # -*- coding:utf-8 -*- import paramiko import time ssh = paramiko.SSHClient() key = paramiko.AutoAddPolicy() ssh.set_missing_host_key_policy(key) def execute(addr): ssh.connect(addr, 22, ', timeout=200) ssh_shell = ssh.invoke_shell…
思考:当存在多个脚本,每个脚本中有多条测试用例时,我们该如何批量执行呢?分析:首先创建2个测试用例脚本(.py文件),每个脚本有2条测试用例,然后批量执行全部测试用例 #Test_01.py # coding=utf-8 ''' Created on 2019-1-3 @author: 丹姐 Project:测试项目1 ''' import unittest class Test01(unittest.TestCase): @classmethod def setUpClass(cls,driv…
一.生成报告 1.先执行一个用例,并生成该用例的报告 # -*- coding: utf-8 -*- from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys from selenium.webdriver.support.ui import Select from selenium.common.except…
1. 什么是数据驱动? 使用数据驱动有什么好处? 用例执行是靠数据来驱动的,每条测试用例除了测试数据不一样意外,所有的用例代码都是一样的,为了使用例批量执行,我们会使用数据驱动的思想来批量执行测试用例: 好处: 批量的执行测试用例,提高执行的测试效率:数据与脚本分离,测试数据需要修改时,代码不需要修改,只需要修改Excel文件的数据即可: 2. 数据驱动作用: 根据用例的数量来自动生成实例方法, 批量执行用例 from ddt import ddt, data @ddt # ddt和data是黄…
开发要求: 1. 对主机进行批量管理    2. 可对单台或主机组批量执行命令    3. 可上传文件到对应的主机或组    4. 使用多线程实现  程序: 1. README # 作者:hkey # 博客地址: # 功能实现: 1. 对主机进行批量管理 2. 可对单台或主机组批量执行命令 3. 可上传文件到对应的主机或组 4. 使用多线程实现 # 目录结构: batch/ ├── batch_server.py # 启动程序 ├── conf/ # 配置文件目录 │   ├── hosts.i…