我很难把饼干装得很好。我打开fl-record并执行一系列请求,每个请求都发送一个cookie。如果我在不提供文件夹路径的情况下使用该命令,输出将以TCPWatch-Proxy格式存储,并且我可以看到所有cookie的内容,因此我知道它们是被发送的。
例如,这是watch0003.request的内容
GET http://mydomainnamehere.pl/api/world/me/ HTTP/1.1
Host: mydomainnamehere.pl
Proxy-Connection: keep-alive
Referer: http://mydomainnamehere.pl/test/engine/
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.57 Safari/534.24
Accept: */*
Accept-Encoding: gzip,deflate,sdch
Accept-Language: pl,en-US;q=0.8,en;q=0.6,fr-FR;q=0.4,fr;q=0.2
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
Cookie: Beacon-ClientID=<<<some-beaconpush-id-here>>>; sessionid=<<<some-session-id>>>; fbs_<<<some-facebook-id>>>="access_token=<<<some-access-token>>>&expires=1308254400&secret=<<<some-secret>>>&session_key=<<<some-session-key>>>&sig=<<<some-signature>>>&uid=<<<some-user-id>>>"; Beacon-Preferred-Client=WebSocket但是,如果我使用测试用例的名称运行fl-record,并且通过这样做order将输出存储为python测试,那么所有Cookies都会被省略。代码中没有一行与它们有任何关系:
import unittest
from funkload.FunkLoadTestCase import FunkLoadTestCase
from webunit.utility import Upload
from funkload.utils import Data
#from funkload.utils import xmlrpc_get_credential
class Simple(FunkLoadTestCase):
def setUp(self):
"""Setting up test."""
self.logd("setUp")
self.server_url = self.conf_get('main', 'url')
# XXX here you can setup the credential access like this
# credential_host = self.conf_get('credential', 'host')
# credential_port = self.conf_getInt('credential', 'port')
# self.login, self.password = xmlrpc_get_credential(credential_host,
# credential_port,
# XXX replace with a valid group
# 'members')
def test_simple(self):
# The description should be set in the configuration file
server_url = self.server_url
# begin of test ---------------------------------------------
...
# /tmp/tmp5Nv5lW_funkload/watch0003.request
self.get(server_url + "/api/world/me/",
description="Get /api/world/me/")
...
# end of test -----------------------------------------------
def tearDown(self):
"""Setting up test."""
self.logd("tearDown.\n")
if __name__ in ('main', '__main__'):
unittest.main()也有一个配置文件,但也没有关于cookie的任何内容。
另一方面,文档指出fl有(Cookie支持)。我还在之前的版本中发现了一些关于Cookie支持的can,所以我可以假设这不仅仅是一个空语句。我还在其中一个changelogs中找到了一个点,即“已删除的cookie”不包含在输出中。这让我怀疑,也许问题是,记录的cookie被标记为删除,或者在从TCP格式转换为实际测试时被fl识别为删除。不过,这只是一个疯狂的猜测。
我想知道:
编辑
显然,TCPWatch记录的一些请求完全被忽略,并且没有包含在输出测试用例中。有人知道它为什么要这么做吗?这跟重定向有关系吗?
编辑(2)
好吧,是的。这件事其实是有道理的。它忽略了重定向的结果,因为这些结果将通过简单地遵循HTTP 302 Found生成。然而,曲奇的问题仍然没有得到解释。
发布于 2014-10-27 18:04:39
我看到这个旧帖子没有回复,所以我想我可以发:
在Python中:标识您要发送的cookie的名称。我的头中是'csrftoken‘,在post中是'csrfmiddlewaretoken'>,我得到了cookie的值,然后在post中传递相同的值以进行身份验证。示例:
res = self.get ( server_url + '/login/', description = 'Get url' ).cookies.itervalues ( ).next ( )
morsel_str = res [ '/' ] [ 'csrftoken' ]
csrftoken = morsel_str.value
# Once Cookie found include it in params
params = [
[ 'csrfmiddlewaretoken', csrftoken ],
[ 'username', 'username..' ],
[ 'password', '********' ] ]
self.setHeader ( 'cookie', 'csrftoken={0}'.format ( csrftoken ) )
resp = self.post ( server_url + '/login/', params, description = "Post /login/" )发布于 2011-09-05 12:02:17
我在Funkload发现了一个窃听器。Funkload没有正确处理带前导“”的cookie。在领域内。此刻,所有的饼干都被默默地忽略了。
检查这个分支:https://github.com/sbook/FunkLoad
我已经发送了一个拉请求:https://github.com/nuxeo/FunkLoad/pull/32
https://stackoverflow.com/questions/6377535
复制相似问题