Grinder运行脚本 我所了解的有三种
1. 单个运行
这个适合在调试,测试代码的时候用,方便,快捷。
grinder.properties 文件如下
**grinder.properties**
#
# helloworld grinder.properties
#
#以下为你的环境配置
grinder.jvm.arguments=-Dpython.home=c::/devTools/jython
grinder.jvm.arguments=-Dpython.path=c:/grinder/bin
grinder.jvm.arguments=-Dpython.verbose=debug
grinder.processes=1
grinder.threads=1
grinder.runs=1
#grinder.useConsole=false
grinder.logDirectory=log
grinder.numberOfOldLogs=0
#grinder.initialSleepTime=500
#grinder.sleepTimeFactor=0.01
#grinder.sleepTimeVariation=0.005
#sequence.py 就是你要运行的单个的脚步
grinder.script=sequence.py
grinder.useConsole = true
2.Run test scripts in sequence(按顺序运行脚本)
这个方法适合完成一个project后,一起运行。
grinder.properties 文件如下
**grinder.properties**
#
# helloworld grinder.properties
#
grinder.jvm.arguments=-Dpython.home=c::/devTools/jython
grinder.jvm.arguments=-Dpython.path=c:/grinder/bin
grinder.jvm.arguments=-Dpython.verbose=debug
grinder.processes=1
grinder.threads=1
grinder.runs=1
#grinder.useConsole=false
grinder.logDirectory=log
grinder.numberOfOldLogs=0
#grinder.initialSleepTime=500
#grinder.sleepTimeFactor=0.01
#grinder.sleepTimeVariation=0.005
#下面2个就是你要运行的脚步
script1=ebayUSForumsSimpleSearch
script2=ebayUSForumsAdvancedSearch
#mian.py 是控制顺序运行的脚步的脚步
grinder.script=main.py
grinder.useConsole = true
main.py
# Run test scripts in sequence
#
# Scripts are defined in Python modules (helloworld.py, goodbye.py)
# specified in grinder.properties:
#
# script1=helloworld
# script2=goodbye
from net.grinder.script.Grinder import grinder
from java.util import TreeMap
# TreeMap is the simplest way to sort a Java map.
scripts = TreeMap(grinder.properties.getPropertySubset("script"))
# Ensure modules are initialised in the process thread.
for module in scripts.values(): exec("import %s" % module)
def createTestRunner(module):
exec("x = %s.TestRunner()" % module)
return x
class TestRunner:
def __init__(self):
self.testRunners = [createTestRunner(m) for m in scripts.values()]
# This method is called for every run.
def __call__(self):
for testRunner in self.testRunners: testRunner()
这样的话,就可以顺序运行了。
3.Run test scripts in parallel(同时并行运行脚本)
个人认为这个方法有很多优点,可以更有效的进行压力测试
grinder.properties 文件如下
**grinder.properties**
#
# helloworld grinder.properties
#
grinder.jvm.arguments=-Dpython.home=c::/devTools/jython
grinder.jvm.arguments=-Dpython.path=c:/grinder/bin
grinder.jvm.arguments=-Dpython.verbose=debug
grinder.processes=1
#如果你要同时运行几个脚本,那么下面的grinder.threads的值应该>=脚本数。
grinder.threads=4
grinder.runs=1
#grinder.useConsole=false
grinder.logDirectory=log
grinder.numberOfOldLogs=0
#grinder.initialSleepTime=500
#grinder.sleepTimeFactor=0.01
#grinder.sleepTimeVariation=0.005
grinder.script=main.py
grinder.useConsole = true
main.py
from net.grinder.script.Grinder import grinder
scripts = ["helloworld", "good"]
#If you want to add new scripts you have two ways.
# 1.you can insert directly such as scripts = ["helloworld", "good"]
# 2.or you can do like this: scripts.append('xxx')
# Ensure modules are initialised in the process thread.
for script in scripts: exec("import %s" % script)
# import the scripts files such as helloworld.py good.py
def createTestRunner(script):
exec("x = %s.TestRunner()" % script)
return x
class TestRunner:
def __init__(self):
#script = scripts[grinder.threadID % len(scripts)]
# it's ok on Grinder 3.0.1, but is not ok on Grinder 3.1
script = scripts[grinder.getThreadNumber() % len(scripts)]
#it's ok on 3.1 but not 3.0.1
#script = scripts[grinder.threadNumber % len(scripts)]
#it's ok on 3.1 but not 3.0.1
# If you set grinder.threads=n(in grinder.properties), the the ID is 1,2,3.
# If ID=1, then 1%len(scripts)==1( there are 3 elements in scripts, so len(scripts) is 3, so 1%3==1)
# so script=scripts[1], so script='ebayUSForumsGuestViewForum'
# so thread 1 run ebayUSForumsGuestViewForum.py
# If ID=2, then 2%len(scripts)==2( there are 3 elements in scripts, so len(scripts) is 3, so 2%3==2)
# so script=scripts[2], so script='ebayUSForumsGuestViewThread'
# so thread 2 run ebayUSForumsGuestViewThread.py
# If ID=3, then 3%len(scripts)==0( there are 3 elements in scripts, so len(scripts) is 3, so 3%3==0)
# so script=scripts[0], so script='ebayUSForumsAdvancedSearch'
# so thread 3 run ebayUSForumsAdvancedSearch.py
self.testRunner = createTestRunner(script)
# This method is called for every run.
def __call__(self):
self.testRunner()
Ok,到此为止,主要是给自己的看的,如果你有需要可以看,有问题可以问我.
分享到:
相关推荐
Grinder脚本使用Jython编写,这是一种Python的Java实现。您可以在脚本中添加逻辑,例如循环、条件判断等,以模拟更复杂的用户行为。 五、运行测试 1. 创建配置文件:Grinder测试需要一个配置文件(`.properties`)...
1. **创建测试脚本**:The Grinder 使用 Jython 作为脚本语言,你需要编写一个 `.py` 文件来定义测试逻辑。例如,你可以创建一个名为 `test_script.py` 的文件,并放置在您喜欢的位置。 2. **配置测试代理**:在 ...
Grinder是一款开源的负载和性能测试框架,其核心理念是“测试脚本化”,支持使用Jython(Python的Java版本)语言编写测试脚本,使得测试脚本的编写更为灵活和易读。Grinder提供了一个图形化的控制台,可以方便地管理...
通过阅读提供的博客和分析这些文件,我们可以深入学习如何利用Grinder进行有效的性能测试,从而优化我们的应用程序,确保在高负载下的稳定运行。在源码分析和工具使用的领域,Grinder提供了一个宝贵的实践平台,对于...
"grinder-3.2.zip"是Grinder 3.2的二进制发行版,包含了运行Grinder所需的所有文件,用户可以直接下载并启动进行性能测试。"grinder-3.2-src.zip"则提供了源代码,对于开发者来说,这是一个宝贵的资源,可以深入了解...
要创建一个简单的grinder脚本,请运行: pub run grinder:init 通常,grinder脚本如下所示: import 'package:grinder/grinder.dart' ;main (args) => grind (args);@DefaultTask ( 'Build the project.' )build ()...
Grinder 是一个强大的框架,用于在多台机器上运行测试脚本。该框架由三种类型的进程组成:Worker 进程、Agent 进程以及控制台(Console)。每种进程的具体职责如下: - **Worker 进程**:解释执行 Jython 测试脚本...
Grinder是一个将测试脚本运行在多个机器上的框架。Grinder框架由三个process(或program)组成:workerprocesses,agentprocesses,和console.每种process的职责如下:Workerprocesses解释Jython测试脚本,并启动worker...
此外,Grinder 还提供了一个脚本库,里面包含了各种实用的示例脚本。这些脚本可以直接使用或者作为参考来创建自己的测试案例。 #### 7. SSL 支持 ##### 2.7.1. 准备工作 在开始使用 SSL 功能之前,需要做一些准备...
要创建一个简单的grinder脚本,请运行: pub run grinder:init通常,grinder脚本如下所示: import 'package:grinder/grinder.dart' ;main (args) => grind (args);@DefaultTask ( 'Build the project.' )build () ...
the Grinder作为一种负载生成工具,可以请求、购买或租借大量的测试客户机来测试运行在服务器上的应用程序。 the Grinder作为一个开源工具,除了具有良好的功能、易用性,以及适用于广泛J2EE性能问题的特点外,它还...
要创建一个简单的grinder脚本,请运行: pub run grinder:init通常,grinder脚本如下所示: import 'package:grinder/grinder.dart' ;main (args) => grind (args);@DefaultTask ( 'Build the project.' )build () ...
要创建一个简单的grinder脚本,请运行: pub run grinder:init通常,grinder脚本如下所示: import 'package:grinder/grinder.dart' ;main (args) => grind (args);@DefaultTask ( 'Build the project.' )build () ...
要创建一个简单的grinder脚本,请运行: pub run grinder:init 通常,grinder脚本如下所示: import 'package:grinder/grinder.dart' ; main (args) => grind (args); @DefaultTask ( 'Build the project.' ) ...
要创建一个简单的grinder脚本,请运行: pub run grinder:init通常,grinder脚本如下所示: import 'package:grinder/grinder.dart' ;main (args) => grind (args);@DefaultTask ( 'Build the project.' )build () ...
要创建一个简单的grinder脚本,请运行: pub run grinder:init通常,grinder脚本如下所示: import 'package:grinder/grinder.dart' ;main (args) => grind (args);@DefaultTask ( 'Build the project.' )build () ...