获取fixture中的主键(id)(Python,SQLAlchemy)

Jul*_*era 7 python pylons fixture sqlalchemy

我正在使用fixture来测试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
Run Code Online (Sandbox Code Playgroud)

现在,问题是,当我在功能测试中使用这些数据时(如http://farmdev.com/projects/fixture/using-fixture-with-pylons.html所述),我无法获取id (主键)公司.

在我的应用程序中,用户登录后应重定向到公司资料页面,这就是我需要公司ID的原因.测试看起来或多或少像这样:

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
Run Code Online (Sandbox Code Playgroud)

第一个请求登录用户,第二个请求检查登录后是否可以访问公司配置文件页面.

这样我得到:

AttributeError:类test_company没有属性'company_id'

我也尝试过:

UserData.test_user.company.ref('company_id')
Run Code Online (Sandbox Code Playgroud)

但它导致:

<Ref.RefValue for CompanyData.test_company.company_id(尚未加载)>

这对我来说似乎很奇怪...为什么不装?

有没有办法找出什么是主键?

est*_*tin 0

UserData.test_user.company.ref('id')
or
UserData.test_user.ref('company_id')
Run Code Online (Sandbox Code Playgroud)