django 灯具:在哪里添加灯具文件

Posted

技术标签:

【中文标题】django 灯具:在哪里添加灯具文件【英文标题】:django fixtures: Where to add a fixture file 【发布时间】:2010-11-26 00:33:20 【问题描述】:

我正在尝试创建一组测试用例来涵盖我的 django 应用程序。我需要预定义的数据库数据来运行我的一些测试。所以我决定使用固定装置。

我所做的是: 1)创建夹具文件: oleg$ python manage.py dumpdata goserver > fixture1.json 2)将fixture放在应用程序所在的目录中 oleg$ cp fixture1.json goserver/ 3) 在我的应用程序的测试文件中记下纹理名称

   class GoserverTestCase(TestCase):
    fixtures = ['fixture1.json']

    def setUp(self):
        pass

    def testUserIsAdded(self):
        print "Users" , User.objects.all()
        #print ActiveList.objects.all()
        self.assertEquals(True, True)

4) 使用命令运行文本大小写: oleg$ python manage.py test --verbosity=2 goserver

测试运行的输出是(部分):

尝试 '/Users/oleg/jin/goclub/trunk/jin/../jin/register/fixtures' 对于 xml 夹具 'initial_data'... 否 xml 夹具 'initial_data' 在 '/Users/oleg/jin/goclub/trunk/jin/../jin/register/fixtures'。 试 '/Users/oleg/jin/goclub/trunk/jin/../jin/register/fixtures' 对于 json 夹具 'initial_data'... 否 json夹具'initial_data'在 '/Users/oleg/jin/goclub/trunk/jin/../jin/register/fixtures'。 检查 '/Users/oleg/jin/goclub/trunk/jin/../jin/captcha/fixtures' 对于固定装置...尝试 '/Users/oleg/jin/goclub/trunk/jin/../jin/captcha/fixtures' 对于 xml 夹具 'initial_data'... 否 xml 夹具 'initial_data' 在 '/Users/oleg/jin/goclub/trunk/jin/../jin/captcha/fixtures'。 试 '/Users/oleg/jin/goclub/trunk/jin/../jin/captcha/fixtures' 对于 json 夹具 'initial_data'... 否 json夹具'initial_data'在 '/Users/oleg/jin/goclub/trunk/jin/../jin/captcha/fixtures'。 检查 '/Users/oleg/jin/goclub/trunk/jin/../jin/goserver/fixtures' 对于固定装置...尝试 '/Users/oleg/jin/goclub/trunk/jin/../jin/goserver/fixtures' 对于 xml 夹具 'initial_data'... 否 xml 夹具 'initial_data' 在 '/Users/oleg/jin/goclub/trunk/jin/../jin/goserver/fixtures'。 试 '/Users/oleg/jin/goclub/trunk/jin/../jin/goserver/fixtures' 对于 json 夹具 'initial_data'... 否 json夹具'initial_data'在 '/Users/oleg/jin/goclub/trunk/jin/../jin/goserver/fixtures'。 检查 '/' 是否有固定装置...尝试 '/' 用于 xml 夹具 'initial_data'... “/”中没有 xml 夹具“initial_data”。 为 json 夹具尝试“/” 'initial_data'... 没有 json 夹具 '/'中的'initial_data'。检查'U' 用于固定装置...为 xml 尝试“U” 夹具'initial_data'...没有xml 'U'中的夹具'initial_data'。试 'U' 用于 json 夹具'initial_data'... “U”中没有 json 夹具“initial_data”。 检查 's' 的固定装置...尝试 's' 用于 xml 夹具 'initial_data'... “s”中没有 xml 夹具“initial_data”。 为 json 夹具尝试“s” 'initial_data'..

实际上问题是根本没有找到fixture,所以没有添加我想添加到测试数据库中的数据。你能建议我一个解决问题的方法吗

我尝试了一种新方法。 我只是做了一个完整数据库的转储并将它放到应用程序文件夹中。

但我遇到了一些编码问题。

能否请您检查错误响应:

文件“build/bdist.macosx-10.3-i386/egg/mysqldb/cursors.py”,第 168 行,在执行中 如果不是 self._defer_warnings:self._warning_check() _warning_check 中的文件“build/bdist.macosx-10.3-i386/egg/MySQLdb/cursors.py”,第 82 行 警告(w[-1],self.Warning,3) 文件“/opt/local/lib/python2.5/warnings.py”,第 62 行,在警告中 全局变量) 文件“/opt/local/lib/python2.5/warnings.py”,第 102 行,在 warn_explicit 中 提出讯息 警告:不正确的字符串值:第 1 行的列 'object_repr' 的 '\xD0\x9D\xD0\xB0 \xD0...'

testUserIsAdded (jin.goserver.tests.GoserverTestCase) ... 用户 []

还有一个问题。当我禁用固定装置时,我仍然收到错误:

单元测试代码覆盖率结果

Traceback(最近一次调用最后一次): 文件“manage.py”,第 11 行,在 执行管理器(设置) 文件“/opt/local/lib/python2.5/site-packages/Django-1.0.2_final-py2.5.egg/django/core/management/init.py”,第 340 行,在执行管理器中 实用程序.execute() 文件“/opt/local/lib/python2.5/site-packages/Django-1.0.2_final-py2.5.egg/django/core/management/init.py”,第 295 行,在执行 self.fetch_command(子命令).run_from_argv(self.argv) 文件“/opt/local/lib/python2.5/site-packages/Django-1.0.2_final-py2.5.egg/django/core/management/base.py”,第 192 行,在 run_from_argv self.execute(*args, **options.dict) 文件“/opt/local/lib/python2.5/site-packages/Django-1.0.2_final-py2.5.egg/django/core/management/base.py”,第219行,在执行 输出 = self.handle(*args, **options) 文件“/opt/local/lib/python2.5/site-packages/Django-1.0.2_final-py2.5.egg/django/core/management/commands/test.py”,第 33 行,在句柄中 失败= test_runner(test_labels,详细度=详细度,交互式=交互式) 文件“/opt/local/lib/python2.5/site-packages/django_test_coverage-0.1-py2.5.egg/django-test-coverage/runner.py”,第 58 行,在 run_tests modules.extend(_package_modules(*pkg)) _package_modules 中的文件“/opt/local/lib/python2.5/site-packages/django_test_coverage-0.1-py2.5.egg/django-test-coverage/runner.py”,第 92 行 modules.append(import(impstr + '.' + name, , , [''])) 文件“/Users/oleg/jin/goclub/trunk/jin/goserver/admin.py”,第 11 行,在 admin.site.register(ActiveList, ActiveListAdmin) 文件“/opt/local/lib/python2.5/site-packages/Django-1.0.2_final-py2.5.egg/django/contrib/admin/sites.py”,第 64 行,在寄存器中 raise AlreadyRegistered('模型 %s 已经注册' % model.name) django.contrib.admin.sites.AlreadyRegistered: 模型 ActiveList 已经注册

【问题讨论】:

现在对我来说事情变得更复杂了。我导出了整个数据库,现在加载夹具时,我不断收到 IntegrityError: (1062, "Duplicate entry 'goserver-activelist' for key 'app_label'") 不知道为什么会出现错误。我尝试从生产中刷新数据库(以防万一我以某种方式在开发中添加了 2 次应用程序),但错误仍然相同。我还尝试通过夹具文件减少查看重复项,但没有设法获得其中任何一个 其实最后一部分是一个单独的问题 Oleg,您找到解决“重复输入...”问题的方法了吗? 从转储中删除内容类型应用程序 【参考方案1】:

关于将夹具文件放在哪里的第一个问题:在每个应用程序中创建一个名为夹具的文件夹,并将夹具数据放在那里。

关于完整性错误的第二个问题,请查看有关内容类型和固定装置问题的讨论:

Problems with contenttypes when loading a fixture in Django

【讨论】:

Django 现在还查看setting.FIXTURE_DIRS 可以方便地手动指向不是您自己创建的应用程序的位置,例如默认用户应用程序。

以上是关于django 灯具:在哪里添加灯具文件的主要内容,如果未能解决你的问题,请参考以下文章

基于php+mysql的灯具店的电子商务系统

如何在赛普拉斯中使用灯具列表断言列表

MA2配接灯具LUA

智能led灯具管理软件功能要求

多变的模块化灯具

欧盟led灯具安规标准要求是什么?