2012-07-09 57 views
1

我正在使用研磨机测试我的web应用程序。我使用tcp代理生成脚本。 它工作得很好,但是当我记录添加到它,将产生以下错误:记录研磨机时出错

Error running worker process 
    net.grinder.scriptengine.jython.JaythonScriptExceutionException: 
    SyntaxError ('invalid syntax', ('c:\\........ \\script_name.py', 79, 9, 
    "\tlog('Arvind Purohit')")) 
    (no code object) at line 0 

这是我的脚本:

# The Grinder 3.9.1 
# HTTP script recorded by TCPProxy at 9 Jul, 2012 3:08:10 PM 

from net.grinder.script import Test 
from net.grinder.script.Grinder import grinder 
from net.grinder.plugin.http import HTTPPluginControl, HTTPRequest 
from HTTPClient import NVPair 
log = grinder.logger.info 
connectionDefaults = HTTPPluginControl.getConnectionDefaults() 
httpUtilities = HTTPPluginControl.getHTTPUtilities() 

# To use a proxy server, uncomment the next line and set the host and port. 
# connectionDefaults.setProxyServer("localhost", 8001) 

# These definitions at the top level of the file are evaluated once, 
# when the worker process is started. 

connectionDefaults.defaultHeaders = \ 
    [ NVPair('Accept-Encoding', 'gzip, deflate'), 
    NVPair('User-Agent', 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)'), ] 

headers0= \ 
    [ NVPair('Accept', '*/*'), 
    NVPair('Referer', 'http://192.168.1.53:8081/JSP-LOGIN/login.jsp'), 
    NVPair('Accept-Language', 'en-IN'), ] 

headers1= \ 
    [ NVPair('Accept', 'image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*'), 
    NVPair('Referer', 'http://192.168.1.53:8081/JSP-LOGIN/login.jsp'), 
    NVPair('Accept-Language', 'en-IN'), ] 

headers2= \ 
    [ NVPair('Accept', 'image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*'), 
    NVPair('Referer', 'http://192.168.1.53:8081/JSP-LOGIN/welcome.jsp'), 
    NVPair('Accept-Language', 'en-IN'), ] 

url0 = 'http://192.168.1.53:8081' 

# Create an HTTPRequest for each request, then replace the 
# reference to the HTTPRequest with an instrumented version. 
# You can access the unadorned instance using request101.__target__. 
# ========= START -================ 
request101 = HTTPRequest(url=url0) 
request101 = Test(101, 'GET login.jsp').wrap(request101) 

request102 = HTTPRequest(url=url0, headers=headers0) 
request102 = Test(102, 'GET valid.js').wrap(request102) 

request103 = HTTPRequest(url=url0) 
request103 = Test(103, 'GET favicon.ico').wrap(request103) 

# ====== login============= 
request201 = HTTPRequest(url=url0, headers=headers1) 
request201 = Test(201, 'POST loginmid.jsp').wrap(request201) 

request202 = HTTPRequest(url=url0, headers=headers1) 
request202 = Test(202, 'GET welcome.jsp').wrap(request202) 

# ==========LOGOUT============ 
request301 = HTTPRequest(url=url0, headers=headers2) 
request301 = Test(301, 'GET logout.jsp').wrap(request301) 

request302 = HTTPRequest(url=url0, headers=headers2) 
request302 = Test(302, 'GET login.jsp').wrap(request302) 

request303 = HTTPRequest(url=url0, headers=headers0) 
request303 = Test(303, 'GET valid.js').wrap(request303) 


class TestRunner: 
    """A TestRunner instance is created for each worker thread.""" 

    # A method for each recorded page. 
    def page1(self): 
    """GET login.jsp (requests 101-103).""" 
    result = request101.GET('/JSP-LOGIN/login.jsp', None, 
     (NVPair('Accept', 'image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*'), 
     NVPair('Accept-Language', 'en-IN'),)) 
    log('ARVIND PUROHIT') 
    grinder.sleep(13) 
    request102.GET('/JSP-LOGIN/valid.js') 

    grinder.sleep(62) 
    request103.GET('/favicon.ico', None, 
     (NVPair('Accept', '*/*'),)) 

    return result 

    def page2(self): 
    """POST loginmid.jsp (requests 201-202).""" 

    # Expecting 302 'Moved Temporarily' 
    result = request201.POST('/JSP-LOGIN/loginmid.jsp', 
     (NVPair('userName', 'A'), 
     NVPair('password', 'A'), 
     NVPair('Submit', 'Login'),), 
     (NVPair('Content-Type', 'application/x-www-form-urlencoded'),)) 

    grinder.sleep(15) 
    request202.GET('/JSP-LOGIN/welcome.jsp') 
    self.token_flag = \ 
     httpUtilities.valueFromBodyURI('flag') # 'edit' 

    return result 

    def page3(self): 
    """GET logout.jsp (requests 301-303).""" 

    # Expecting 302 'Moved Temporarily' 
    result = request301.GET('/JSP-LOGIN/logout.jsp') 

    request302.GET('/JSP-LOGIN/login.jsp') 

    request303.GET('/JSP-LOGIN/valid.js', None, 
     (NVPair('If-Modified-Since', 'Tue, 03 Jul 2012 10:18:40 GMT'), 
     NVPair('If-None-Match', 'W/\"4436-1341310720000\"'),)) 

    return result 

    def __call__(self): 
    """Called for every run performed by the worker thread.""" 
    self.page1()  # GET login.jsp (requests 101-103) 

    grinder.sleep(12893) 
    self.page2()  # POST loginmid.jsp (requests 201-202) 

    grinder.sleep(16403) 
    self.page3()  # GET logout.jsp (requests 301-303) 

def instrumentMethod(test, method_name, c=TestRunner): 
    """Instrument a method with the given Test.""" 
    unadorned = getattr(c, method_name) 
    import new 
    method = new.instancemethod(test.wrap(unadorned), None, c) 
    setattr(c, method_name, method) 

# Replace each method with an instrumented version. 
# You can call the unadorned method using self.page1.__target__(). 
instrumentMethod(Test(100, 'Page 1'), 'page1') 
instrumentMethod(Test(200, 'Page 2'), 'page2') 
instrumentMethod(Test(300, 'Page 3'), 'page3') 
+0

请以文字提供错误。该图像是很小的阅读。 – jurgemaister 2012-07-09 09:51:45

+0

Starnge行为.... 我只是复制粘贴上述脚本重现错误,它工作正常,但同样的事情,我用另一个脚本记录和我得到相同的错误?这是与编码有关的问题? 顺便说一句,错误是 *错误worker-bootstrap:运行工作进程错误process.grinder.scriptengine.jython.JaythonScriptExceutionException:SyrntexError('invalid syntax',('c:\\ ........ \\ scrypt_name .py',,,“\ tlog('Arvind Purohit')”))* – Arvind 2012-07-09 10:45:55

回答

2

我刚学的Python(小于一周)但我认为这可能是\t的问题。

Python是阅读本:

\tlog('Arvind Purohit') 

但是,而不是一个标签,它预计4个空格,如:

log('Arvind Purohit') 

当你复制/粘贴这就是为什么我们必须正常工作。确保你使用的是一个显示所有字符的编辑器来避免这种情况,并用垂直线进行缩进,这样你也可以避免“(无代码对象)在第0行”错误。