gpt4 book ai didi

django - Django 可重用应用程序中的功能测试

转载 作者:行者123 更新时间:2023-11-28 19:49:46 24 4
gpt4 key购买 nike

我正在编写一个 Django 可重用应用程序。它不是一个可以单独使用的普通应用程序。它需要其他应用程序才能使用,就像 django.contrib.admin 或 django-dajaxice 一样。

我当前的项目树如下所示:

django-myapp/
docs/
some.rst
docs.rst
...
myapp/
static/
myapp/
some_js_stuff.js
templatetags/
some_file.py
__init__.py
base.py
manager.py
...
unit_tests/
__init__.py
test_base.py
test_manager.py
functional_tests/
__init__.py
functional_tests.py
urls.py
README.rst
LICENSE
requirements.txt
requirements-test.txt
setup.py
...

单元测试很简单——我只是在测试我的代码,所以我不需要完整的 Django 环境来运行它们。简单的 ./setup.py test 完美运行。

功能测试是棘手的部分。我想使用 selenium,所以我需要运行开发服务器,这需要整个 Django 环境。我正在尝试使用 django.test.LiveServerTestCase 但没有成功(看起来没有定义 url,在 settings 中设置 ROOT_URLCONF和类中的 urls 属性没有帮助)。

我找到的每一篇文档,stackoverflow 上的每一个问题都讲述了如何在 Django 项目中测试 Django 应用程序。这是我的问题:在不设置完整的 Django 项目的情况下运行可重用应用程序的功能/集成测试的最佳(和有效)方法是什么?

最佳答案

作为Nathan says在没有堆栈的情况下,很难测试整个堆栈中的一个单元。所以你必须有一个设置文件。看看如何优秀django-debug-toolbar应用程序做到了:

它有一个 Makefile使用 test_selenium 规则:

test_selenium:
DJANGO_SELENIUM_TESTS=true DJANGO_SETTINGS_MODULE=tests.settings \
django-admin.py test tests

并在其 tests 中模块它有一个简单的骨头settings.py带着最基本的必需品:

  • INSTALLED_APPS 以及正在测试的应用
  • ROOT_URLCONF 指向 urls.py
  • MIDDLEWARE_CLASSES 之类的东西可能会跳过,因为您没有。

和一个test_integration.py

@skipUnless('DJANGO_SELENIUM_TESTS' in os.environ, "selenium tests not requested")
class DebugToolbarLiveTestCase(LiveServerTestCase):
...

研究他们的设置。从 Makefile 开始并深入挖掘,确保您了解所有内容的原因。

我喜欢这种设置,因为集成/功能测试往往很慢。可以理解的是,他们测试了整个堆栈及其所有事件部件。他们的 Makefile 提供了一种跳过它们的简单方法。如果我有一个使用 Javascript 的可重用应用程序,我会看看 也。或者一些 other tool对 javascript 进行单元测试。因为运行缓慢的集成测试只是为了查看 js 单元是否工作是一件痛苦的事情。

关于django - Django 可重用应用程序中的功能测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22096999/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com