自动生成LR脚本且运行

背景:作为一个测试,特别是性能测试,尤其在活动的测试,时间紧,有很多要测的,我们的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名称,以,隔开

原文地址:https://www.cnblogs.com/sincoolvip/p/11972439.html

时间: 2024-08-07 03:30:04

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

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

http://blog.csdn.net/jjiss318/article/details/7632041 我们在Unity3D开发的时候,经常会看到它会产生不少固定命名工程文件,诸如: Assembly-CSharp-vs.csproj Assembly-CSharp-firstpass-vs.csproj Assembly-CSharp-Editor-vs.csproj Assembly-CSharp-Editor-firstpass-vs.csproj 看得不少人云里雾里的.那么,这些工程

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

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

PowerDesigner 创建数据库模型、自动生成模型类、自动生成Sql脚本

一.保存工作空间 二.文件->新建模型 三.新建数据库表 四.修改数据库表名称 五.设置数据库表字段 六.工具->Generate Object-Oriented Model 打开详情页签,去掉"检查模型"和名称转换为编码 打开常规,选择你想要生成的语言,应用并确认 七.语言->Edit Current Object Language->Profile->Attribute->Templates->definition 按自己的需求重写代码生成

挂载iscsi卷自动生成vdbench 脚本文件

需根据自己的环境修改相应的值 cat testiscsi.sh #!/bin/bash workd='/home/vdbench050406' sdnum=1 hdnum=1 threadnum=8 seekpct=100 rdpct=70 xfersize=8k iorate=max elapse=68400 maxdata=1000g interval=5 name=multihost-${xfersize}-${seekpct}.file echo "hd=default,vdbench=

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

<?xml version="1.0"?><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See t

SQL Server镜像自动生成脚本

SQL Server镜像自动生成脚本 镜像的搭建非常繁琐,花了一点时间写了这个脚本,方便大家搭建镜像 执行完这个镜像脚本之后,最好在每台机器都绑定一下hosts文件,不然的话,镜像可能会不work 192.168.1.1 WSQL01192.168.1.2 WSQL02192.168.1.3 WWEB03 --★Do部分都是需要填写的 -- ============================================= -- Author: <桦仔> -- Blog: <ht

MonkyTalk学习-4-JS脚本修改运行

JS脚本的修改和运行方面的内容, 1. 导出脚本 在录制完成或者通过Table View界面编辑过之后,会自动生成JavaScript脚本,进入JavaScript的Tab下,可以看出如下的结果 点击Export按钮,会自动生成一个.js文件,内容和在JavaScript 中看到的内容相同. 2. 能做什么 If you want to include common programming structures like flow control, loops, and random numbe

根据yaml测试用例自动生成py文件

一.目前使用的接口自动化框架在编写测试用例时,需要编写yaml文件,然后在写对应的脚本文件,每个接口的py文件,大同小异,在前面几天的编写的过程中,感觉很繁琐 于是就产生了能不能根据编写完毕的yaml文件自动生成py文件的想法,经过一番功夫,终于搞定,说明如下: 二.根据固定格式编写yaml测试用例文件 1.yaml文件名字格式: 2.yaml内容格式: 三.yaml文件编写完毕后,运行common文件下create_py文件 运行create_py函数需要2个参数,第一个参数是编写完毕的yam

制作新网络框架快速自动生成消息结构体的编辑器

这两天制作了一个自动生成代码脚本的窗体编辑器 目前还没有做过第一行可以选择生成的脚本类型,分请求消息和回应消息两种结构体脚本 第二行可以手动输入命名空间,第三行手动输入文件的名称,类名与文件名称相同 后面两个ID是消息的ID 下面的Popon的列表根据第一行选择脚本类型不同是变化的 选中string或者数组时会出现长度的输入框 输入好一条字段后点击Add New Field按钮可以添加下一条 当有大于一条字段的时候就可以生成脚本了,选一个路径将其保存 这行代码可以刷新Project文件夹,自动生