我已经通过this帖子,但它没有包含任何相关答案。
我使用Django 1.11
,我的views.py
是模块化的(不是基于类的)。
我想在django&#python shell中测试shell中的视图模块(函数)。
>>> python manage.py shell
直接导入如下视图:
>>> from my_app import views
它有效,但这对我来说似乎不是首选。
是否有任何首选方式或者我应该从shell中的django导入视图还是直接复制该函数?这是什么最好的做法?
答案 0 :(得分:2)
所以你只需要为你的视图编写Django测试,而不是尝试从shell运行它们,因为它将是相同的代码,但你将能够轻松地多次运行测试。
因此,要为单个视图创建测试,您将在django应用程序中创建tests.py,并使用django的测试客户端为视图编写测试。此测试客户端是虚拟Web浏览器,可用于发出http请求。一个简单的tests.py看起来像这样:
from django.tests import TestCase, Client
class MyViewsTestCase(TestCase):
def setUp(self):
self.client = Client() #This sets up the test client
def test_my_view(self):
# A simple test that the view returns a 200 status code
# In reality your test needs to check more than this depending on what your view is doing
response = self.client.get('the/view/url')
self.assertEqual(response.status_code, 200)
然后,您可以使用终端
>中的python manage.py test
或django-admin test
命令运行此操作
再次,您可以从shell中执行此操作,但从长远来看,使用测试框架会更好
Django在编写和运行测试方面有一些很好的文档:https://docs.djangoproject.com/en/2.0/topics/testing/overview/
以及测试客户端上的信息以及其他一些测试工具:https://docs.djangoproject.com/en/2.0/topics/testing/tools/