背景:作为一个测试,特别是性能测试,尤其在活动的测试,时间紧,有很多要测的,我们的LR11因为浏览器兼容问题全录制不了脚本了,用浏览器加代理或手机加代理录制,我感觉好麻烦 ,所以就想如果能用脚本把所有的测试请求,全部自动生成脚本拿来直接用,岂不是爽歪歪。

最近我老大,非要我用python。他有个特点,每当我们用哪个东西刚刚上手的时候,他就要求我们再扩展。

所以我们这里的人的特质就是:懂的很多,但是都不精通。

我的urls.txt

我的脚本就是逐行读取URL,然后把action_name\web_url名称、url给取出来,拼出LR脚本的格式,存储在C文件中。

# -*- coding:utf-8 -*-
'''
@Author :ll
@Version : v1.0
@File :ToLR.py
@CreateTime :2019-11-28 下午 5:07
'''
import os,sys
#一批URL过来,生成简单的LR脚本
class ToLr:
def ToGetScript(self,fromfile,tofile):
for url in open(fromfile,'r'):
str = ''
action_name = ''
web_url =''
if '?' in url:#带参数
name = (url.split('/')[-1]).split('?')[0]
web_url=url.split('?')[0]
if '.' in name:
action_name = name.split('.')[0]
else:
action_name = name
filename = tofile + '\\' + action_name + ".c"
str = ToLr().samecontent(action_name,web_url)
print(str)
else:
#没有?
name=url.split('/')[-1]
if '.' in name:
action_name = url.split('.')[0]
else:
action_name = name
filename = tofile + '\\' + action_name + ".c"
str = ToLr().samecontent(action_name, url)
print(str)
with open("%s" % filename, "a+")as f:
f.write(str)
def samecontent(self,action_name,web_url):
str = ''
str = str + action_name + '(){' + "\n"
str = str + '\t' + 'web_url("' + action_name + '",' + '\n'
str = str + '\t\t' + '"URL=' + web_url + '",' + '\n'
str = str + '\t\t' + '"Resource=0",' + '\n'
str = str + '\t\t' + '"RecContentType=text/html",' + '\n'
str = str + '\t\t' + '"Referer=",' + '\n'
str = str + '\t\t' + '"Snapshot=t2.inf",' + '\n'
str = str + '\t\t' + '"Mode=HTTP",' + '\n'
str = str + '\t\t' + '"Mode=HTTP",' + '\n'
str = str + '\t\t' + 'LAST);' + '\n'
str = str + '\t\t' + 'return 0;' + '\n'
str = str + '}'
print(str)
return str def ToPostScript(self, fromfile, tofile):
#第1种,application/text form表单提交
for url in open(fromfile, 'r'):
params={}
name = (url.split('/')[-1]).split('?')[0]
action_name = ''
if '.' in name:
action_name = name.split('.')[0]
else:
action_name = name
filename = tofile + '\\' + action_name + ".c"
uri = url.split('?')[0]
lists = url.split('?')[1].split('&')
for line in lists:
params[line.split('=')[0]]=line.split('=')[1]
str=""
str = str + action_name + '(){' + "\n"
str = str +'\t'+'web_submit_data("'+name+'",'+'\n'
str = str +'\t\t'+'"Action='+uri+'",'+'\n'
str = str +'\t\t'+'"Method=POST",\n'
str = str +'\t\t'+ '"RecContentType=text/html",\n'
str = str +'\t\t'+ '"Snapshot=t7.inf",\n'
str = str +'\t\t'+ '"Mode=HTML",\n'
str = str +'\t\t'+ 'ITEMDATA,\n'
for param in params:
str = str +'\t\t'+ '"Name='+param+'", "Value='+params[param]+'", ENDITEM,\n'
str = str +'\t\t'+ 'LAST);\n'
str = str + '\t\t' + 'return 0;' + '\n'
str = str + '}'
with open("%s" % filename, "a+") as f:
f.write(str) if __name__ == '__main__':
a = ToLr()
fromtxt = input("请输入urls存放的完整路径:")
totxt = input("请输入脚本输出存放文件夹:")
getorpost = input('你要生成的是get请求还是post请求:get输入1,post输入2')
print(getorpost)
if getorpost=='1':
a.ToGetScript(fromtxt, totxt)
elif getorpost=='2':
a.ToPostScript(fromtxt, totxt)
else:
print('输入不正确,你到底想干什么!')
print(str)

  以上代码覆盖几个点:

1、get请求,包括带参和无参2种形式

2、post请求,只包括application/text类型的Form表单提交,application/json类型不支持

执行后生成C文件:

LR修改内容:

1、进.usr文件增加左树action显示

2、进.usp修改增加action

新增RunLogicRunRoot标签内容,修改名字2处

增加以下几处的action名称,以,隔开

自动生成LR脚本且运行的更多相关文章

  1. fiddler4自动生成jmeter脚本

    接口.性能测试任务当遇到从浏览器或移动app自己抓包的情况出现时就变得巨苦逼了,苦在哪里?苦在需要通过抓包工具抓报文,需要通过抓包报文梳理业务逻辑.需要将梳理的逻辑编写成脚本.最最苦的情况是,自己抓包 ...

  2. 文件参数化-utp框架之根据yaml文件自动生成python文件+utp运行用例

    根据yaml文件自动生成python文件 utp框架: bin目录:存放执行文件(run.py) cases目录:存放生成的用例的python文件(该目录下的文件为根据data目录下的测试用例生成的p ...

  3. MsSQLserver中修改字段值系统自动生成的脚本

    主要参考一下脚本的实现思路: ①创建临时表 ②创建临时表 ③向临时表插入数据 ④删除原表 ⑤临时表改名 /* 为了防止任何可能出现的数据丢失问题,您应该先仔细检查此脚本,然后再在数据库设计器的上下文之 ...

  4. 【转】全面解析Unity3D自动生成的脚本工程文件

    http://blog.csdn.net/jjiss318/article/details/7632041 我们在Unity3D开发的时候,经常会看到它会产生不少固定命名工程文件,诸如: Assemb ...

  5. 【转载】全面解析Unity3D自动生成的脚本工程文件

    我们在Unity3D开发的时候,经常会看到它会产生不少固定命名工程文件,诸如:  Assembly-CSharp-vs.csproj  Assembly-CSharp-firstpass-vs.csp ...

  6. jmeter+ANT+Jekins性能自动生成测试报告脚本(模板),加入:Median TIme、90%、95%、99%、QPS、以及流量显示

    <?xml version="1.0"?><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/T ...

  7. SQL Server镜像自动生成脚本

    SQL Server镜像自动生成脚本 镜像的搭建非常繁琐,花了一点时间写了这个脚本,方便大家搭建镜像 执行完这个镜像脚本之后,最好在每台机器都绑定一下hosts文件,不然的话,镜像可能会不work 1 ...

  8. 自定义Mybatis自动生成代码规则

    前言 大家都清楚mybatis-generate-core 这个工程提供了获取表信息到生成model.dao.xml这三层代码的一个实现,但是这往往有一个痛点,比如需求来了,某个表需要增加字段,肯定需 ...

  9. flask 使用Flask-Migrate迁移数据库(创建迁移环境、生成迁移脚本、更新数据库)

    使用Flask-Migrate迁移数据库 在开发时,以删除表再重建的方式更新数据库简单直接,但明显的缺陷是会丢掉数据库中的所有数据.在生产环境下,没有人想把数据都删除掉,这时需要使用数据库迁移工具来完 ...

随机推荐

  1. scratch2.0的教材视频,王木头系列

    在线视频 http://v.qq.com/vplus/d05a62f676f6f3b6b87401b4530cff9a?page=cover 理论辩证 https://www.sohu.com/a/1 ...

  2. Netbackup常用命令--bprestore

    bprestore bprestore – 从 NetBackup 服务器还原文件 大纲 bprestore [-A | -B | -rb] [-K] [-l | -H | -y] [-r] [-T] ...

  3. 剑指Offer_编程题-003 - 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList

    如题 (总结) 首节点也存放了值,所以ListNode t = listNode; 直接从头开始遍历即可. 简单题目,但是构建的时候出了点问题,毕竟需要自己简单测测. 掌握链表的构建方法, 还要根据题 ...

  4. 基于TCP和UDP的Socket通信

    TCP的Socket通信 TCP是面向连接的,安全的协议,它是一对一的关系 server client 上面只是单个客户端同服务器通信,可使用多线程编程实现多个客户端的通信 UDP的Socket通信 ...

  5. Spring的三大核心思想:IOC(控制反转),DI(依赖注入),AOP(面向切面编程)

    Spring核心思想,IoC与DI详解(如果还不明白,放弃java吧) 1.IoC是什么?    IoC(Inversion of Control)控制反转,IoC是一种新的Java编程模式,目前很多 ...

  6. 在Maven项目中,jsp不解析el表达式

    我的这个项目是用Maven-archetype-webapp项目创建的,如下图所示: 有这种方式创建有一个坑,就是它使用的servlet版本是2.3,而servlet2.4以下的版本是不会自动解析el ...

  7. PHP 判断时间段 至今过了多长时间

    /** * * @param timestamp $time 输入时间 * @return str $str 输入时间与现在时间差的中文 */ function wordTime($time) { / ...

  8. Apache是什么?

    Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行, 由于其多平台和安全性被广泛使用,是最流行的Web服务器端 ...

  9. 工作拾记 - 关于easyui模板后台改为vue-element

    图1: 数据接口,模拟实现一些基本的数据条目 图2: 获取数据,接口都在src/api中 TODO LIST: 接下来要做的呢: 1. 完善此demo,基本的CURD,现在只有getAll,需要将增加 ...

  10. 洛谷 P4149 [IOI2011]Race-树分治(点分治,不容斥版)+读入挂-树上求一条路径,权值和等于 K,且边的数量最小

    P4149 [IOI2011]Race 题目描述 给一棵树,每条边有权.求一条简单路径,权值和等于 KK,且边的数量最小. 输入格式 第一行包含两个整数 n, Kn,K. 接下来 n - 1n−1 行 ...