在视图中测试模块的最佳方法是什么?

时间:2018-03-10 07:31:27

标签: django python-3.x django-views

我已经通过this帖子,但它没有包含任何相关答案。 我使用Django 1.11,我的views.py是模块化的(不是基于类的)。

我想在django&#python shell中测试shell中的视图模块(函数)。

>>> python manage.py shell

直接导入如下视图:

>>> from my_app import views

它有效,但这对我来说似乎不是首选。

是否有任何首选方式或者我应该从shell中的django导入视图还是直接复制该函数?这是什么最好的做法?

1 个答案:

答案 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 testdjango-admin test命令运行此操作

再次,您可以从shell中执行此操作,但从长远来看,使用测试框架会更好

Django在编写和运行测试方面有一些很好的文档:https://docs.djangoproject.com/en/2.0/topics/testing/overview/

以及测试客户端上的信息以及其他一些测试工具:https://docs.djangoproject.com/en/2.0/topics/testing/tools/