2011-01-15 11 views
7

Bir Pylons uygulamasını test etmek için fixture kullanıyorum, ancak bir sorunla karşılaştım.Birincil anahtarın (id) bağlantı noktasına (Python, SQLAlchemy) alınması

en Böyle veri seti var diyelim: (I (http://farmdev.com/projects/fixture/using-fixture-with-pylons.html açıklandığı gibi) fonksiyonel bir testte bu verileri kullandığınızda Şimdi

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 

sorun şu ki, ben kimliği elde edemez Şirketin birincil anahtarı).

Uygulamamda, giriş yaptıktan sonra kullanıcı şirket profil sayfasına yönlendirmeli ve bu yüzden şirketin kimliğine ihtiyacım var. Test az ya da çok şuna benzer: kullanıcı

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 

ilk isteğin günlükleri ve ikinci bir çek o içinde giriş yaptıktan sonra şirket profili sayfasına erişmek eğer.

AttributeError: class test_company has no attribute 'company_id'

Ben de denedim:

Bu şekilde alıyorum

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

Ama sonuçlanır: ... bana garip görünüyor

<Ref.RefValue for CompanyData.test_company.company_id (not yet loaded)>

neden izlemiyor' Yüklendi mi?

Birincil anahtarın ne olduğunu öğrenmenin bir yolu var mı?

cevap

0
UserData.test_user.company.ref('id') 
or 
UserData.test_user.ref('company_id') 
+0

'company_id'' company' tablodaki birincil anahtar sütunu değil, ('user_company_id' olan)' user' tabloda yabancı anahtardır. Birincil anahtar olacaktır senin DataSet's Varsayılan olarak) –

+0

'kimlik' http://farmdev.com/; adlandırma kongre için beni suçlama, ben sadece onunla çalışmak, bu veritabanını tasarım vermedi projeler/fikstür/api/fixture.dataset.html # fixture.dataset.DataSetMeta – estin

+0

Bunu denedim, hiçbir şey değişmiyor. "DataData.test_company.id (henüz yüklenmemiş)> için" Ref.RefValue "almaya devam ediyorum. veri kümesine 'primary_key = [ 'company_id'] ve her iki varyant hiçbir şey değiştirir: Hatta ekleyerek' sınıf Meta çalıştı. –