我如何在JMeter中运行geb测试?
我编译了一个测试罐,并在JMeter中创建了一个BSF采样器。我已经为Jmeter安装了groovy插件。
我的测试类看起来像这样:
class LoginLogoutTest extends GebSpec {
def "Login Logout"() {
given: "Go to the Login Page"
LoginPage loginPage = to LoginPage
when:
loginPage.login("admin", "password")
then:
DashboardPage dashboardPage = at DashboardPage
when:
dashboardPage.logout()
then:
waitFor {at LoginPage}
}
}
我已经使用Gradle构建了包含此测试类所需的所有依赖项的jar。
然后在我的JMeter BSF采样器中,我将语言设置为groovy并编写以下脚本。我的web-test.jar位于JMeters \ lib目录中,正如一些教程所示。
import com.geb.tests.LoginLogoutTest;
LoginLogoutTest myTest = new LoginLogoutTest();
myTest."Login Logout"(); //if commented out i get no errors
当我尝试调用"Login Logout"()
函数时,JMeter会抛出以下异常:
WARN - jmeter.protocol.java.sampler.BSFSampler: BSF error org.apache.bsf.BSFException: exception from Groovy: groovy.lang.MissingFieldException: No such field: $spock_sharedField__browser for class: org.codehaus.groovy.runtime.NullObject
如果我不调用该方法,Jmeter不会抛出任何错误,所以我假设我正在我的JMeter脚本中正确地从我的jar初始化类。
这样做的原因是我们可以通过使用PhantomJs运行此测试的多个线程来执行负载测试。
答案 0 :(得分:0)
您可以通过JSR223采样器在JMeter中使用Groovy开箱即用:
在JMeter 3.0之前,下载Groovy,将embeddable / groovy-all.jar复制到jmeter / lib并重启JMeter
从JMeter 3.0开始,嵌入了Groovy
答案 1 :(得分:0)
我找到了适用于JMeter的Spock采样器。我能够运行我的测试。 如果其他人有兴趣,请点击这里链接。 JMeter Spock Sampler 但是,在运行单线程测试时,只是为了看到采样器工作,Chrome浏览器保持打开状态。不太清楚为什么。这在运行多个线程时会出现问题,因为会有许多浏览器保持打开状态。目标是使用无头浏览器phantomjs,我也已经开始工作了。但是,如果我使用无头浏览器运行多个线程,则会在Windows任务管理进程列表中显示多个实例并且可见。