Получение первичного ключа (id) в фикстуре (Python, SQLAlchemy) - PullRequest
7 голосов
/ 15 января 2011

Я использую приспособление для тестирования приложения Pylons, но наткнулся на проблему.

Допустим, у меня есть такой набор данных:

class CompanyData(DataSet):

    class test_company:
        company_full_name = u'Firma Tęst'
        company_short_name = u'TęstCo'

class UserData(DataSet):

    class test_user:
        user_login = 'testuser'
        user_password = 'test'
        company = CompanyData.test_company

Теперь проблема в том, что когда я использую эти данные в функциональном тесте (как описано в http://farmdev.com/projects/fixture/using-fixture-with-pylons.html),, я не могу получить идентификатор (первичный ключ) компании.

В моем приложениипользователь после входа в систему должен быть перенаправлен на страницу профиля компании, и поэтому мне нужен идентификатор компании. Тест выглядит примерно так:

self.app.post(url(controller='main', action='login'), params={
    'login': UserData.test_user.user_login,
    'password': UserData.test_user.user_password
})

response = self.app.get(url(
    controller='events', action='index',
    company_id=UserData.test_user.company.company_id, # This doesn't work
    view='active'))
assert ... in response

Первый запрос регистрирует пользователя, а второйпроверяется, может ли после входа в систему получить доступ к странице профиля компании.

Таким образом, я получаю:

AttributeError: класс test_company не имеет атрибута "company_id"

Я также пытался:

UserData.test_user.company.ref('company_id')

Но это приводит к:

, что мне кажется странным ... Почему он не загружается?

Есть ли способ узнать, что является первичным ключом?

1 Ответ

0 голосов
/ 21 января 2011
UserData.test_user.company.ref('id')
or
UserData.test_user.ref('company_id')
...