Funkload и печенье - PullRequest
       13

Funkload и печенье

1 голос
/ 16 июня 2011

У меня проблемы с настройкой funkload для правильной работы с файлами cookie. Я включаю fl-record и выполняю серию запросов, каждый из которых отправляет куки. Если я использую команду без указания пути к папке, выходные данные сохраняются в формате 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 с именем тестового примера и, тем самым, заказываю funkload для сохранения вывода в качестве теста 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, поэтому могу предположить, что это не просто пустое утверждение. Я также нашел пункт в одном из журналов изменений, в котором говорится, что «удаленные куки» не включены в вывод. Это заставило меня задуматься о том, что, возможно, проблема в том, что файлы cookie, которые были записаны, помечаются для удаления или распознаются как таковые при преобразовании из формата TCP-Watch в реальный тестовый набор. Однако это только дикое предположение.

Я хотел бы знать:

  • Если у вас когда-либо были успехи с поддержкой funkload для файлов cookie. Если да, то какую версию вы использовали.
  • Из вашего общего опыта работы с funkload и того, стоит ли его использовать в более сложной настройке.

EDIT

По-видимому, некоторые из запросов, записанных TCPWatch, полностью игнорируются и не включаются в выходной тестовый пример. У кого-нибудь есть идея, зачем он это делает? Это как-то связано с перенаправлением?

EDIT (2)

Хорошо, это так. Это одна вещь на самом деле имеет смысл. Это исключает результаты перенаправления, так как они будут сгенерированы простым следствием HTTP 302 Found. Однако вопрос о файлах cookie все еще остается необъяснимым.

Ответы [ 2 ]

1 голос
/ 27 октября 2014

Я вижу, что это старое сообщение не отвечено, поэтому я подумал, что смогу опубликовать:

В Python: укажите имя файла cookie, который вы отправляете.у меня в заголовке 'csrftoken' и в сообщении тот же, что и в '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/" )
0 голосов
/ 05 сентября 2011

Я нашел ошибку в Funkload. Funkload неправильно обрабатывает куки с лидирующим символом '.' в домене. На данный момент все эти куки молча игнорируются.

Проверить эту ветку: https://github.com/sbook/FunkLoad

Я уже отправил запрос на получение ответа: https://github.com/nuxeo/FunkLoad/pull/32

...