Я использую fixture для тестирования приложения Pylons, но я наткнулся на проблему.Получение первичного ключа (id) в fixture (Python, SQLAlchemy)
Допустим, у меня есть такой набор данных:
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: class test_company has no attribute 'company_id'
Я также попытался:
UserData.test_user.company.ref('company_id')
Но это приводит:
<Ref.RefValue for CompanyData.test_company.company_id (not yet loaded)>
, который кажется странным мне ... Почему ISN» t он загружен?
Есть ли способ узнать, что является основным ключом?
'company_id' является столбцом первичного ключа в таблице' company', а не внешним ключом в таблице 'user' (которая является' user_company_id'). Не обвиняйте меня в соглашении об именах, я не проектировал эту базу данных, я просто работаю с ней;) –
По умолчанию в вашем первичном ключе DataSet будет «id» http://farmdev.com/ проекты/fixture/api/fixture.dataset.html # fixture.dataset.DataSetMeta – estin
Я пробовал это, это ничего не меняет. Я продолжаю получать ". Я даже попытался добавить в набор данных «класс Meta: primary_key = ['company_id']', и он ничего не меняет в обоих вариантах. –