自动测试

编写测试时一般有一些规则,以下是一些主要的规则:

  • 测试应该关注一个小部分的功能
  • 测试必须要有明确的目的
  • 测试应该是独立
  • 在编码之前,在提交和推送代码之前运行测试
  • 使用长和描述性的名字进行测试

6.1 运行测试

python manage.py test rango

测试Rango中的模型

好吧,让我们创建一个测试。 在类别模型中,我们要确保浏览数是零或正的,因为观点的数量,比方说,永远不能少于零。 为了创建一个测试,我们可以把下面的代码放进rango/ tests.py

from django.test import TestCase
from rango.models import Category

class CategoryMethodTests(TestCase):
  def test_ensure_views_are_positive(self):

  """ensure_views_are_positive should results True for categories where views are zero or positive"""

  cat=Category(name='test',views=-1, likes=0)
  cat.save()
  self.assertEqual((cat.views>=0),True)

测试结果:

Traceback (most recent call last):
File "C:\Users\XC\PycharmProjects\tango_with_django_project\rango\tests.py", line 9, in test_ensure_views_are_positive
self.assertEqual((cat.views>=0),True)
AssertionError: False != True

测试视图

模拟客户端,它通过在url内部调用一个Django视图。 在测试中,您可以访问响应(包括HTML)和上下文字典。

from django.core.urlresolvers import reverse

class IndexViewTests(TestCase):
      def test_index_view_with_no_categories(self):
    """If no questions exist, an appropriate message should be displayed.
    """
          response=self.client.get(reverse('index'))
          self.assertEqual(response.status_code,200)
          self.assertContains(response,"There are no categories present.")
          self.assertQuerysetEqual(response.context['categories'], [])

6.2 覆盖测试

代码覆盖率测量你的代码库已经被测试了多少,以及你的代码已经通过测试。你可以通过pip install coverage安装一个叫coverage的包.它会自动分析你有多少代码覆盖。 一旦您安装完成,运行以下命令:

$ coverage run --source='.' manage.py test rango

查看

coverage report

你可能感兴趣的:(自动测试)