概述
我当前的项目树看起来像这样:
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测试完美无缺.
功能测试是棘手的部分.我想使用selenium所以我需要运行dev服务器,这需要整个Django环境.我正在尝试使用django.test.LiveServerTestCase但没有成功(看起来没有定义url,在设置中设置ROOT_URLconf并且类中的urls属性没有帮助).
我发现的每一个文档,stackoverflow上的每个问题都讲述了在Django项目中测试Django应用程序.这是我的问题:在没有设置完整的Django项目的情况下,运行可重用应用程序的功能/集成测试的最佳(和工作)方法是什么?
它有一个带有test_selenium规则的Makefile:
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这样的东西你可以跳过,因为你没有.
@skipUnless('DJANGO_SELENIUM_TESTS' in os.environ,"selenium tests not requested") class DebugToolbarLiveTestCase(LiveServerTestCase): ...
研究他们的设置.从Makefile开始,深入挖掘,确保你理解为什么一切都在那里.
我喜欢这种设置,因为集成/功能测试往往是doglow.可以理解的是,他们用所有移动部件测试整个堆栈.他们的Makefile提供了一种简单的方法来跳过它们.如果我有一个使用Javascript的可重用应用程序,我也会看一下jasmine.或者一些other tool来测试javascript.因为运行慢速集成仅仅是为了查看js单元是否有效是一件痛苦的事.
总结
以上是编程之家为你收集整理的Django可重用应用程序中的功能测试全部内容,希望文章能够帮你解决Django可重用应用程序中的功能测试所遇到的程序开发问题。
如果您也喜欢它,动动您的小指点个赞吧