Day19 - 使用Django进行自动化测试 (1)

今天的实作内容主要根据教学网站进行。

在软件开发流程的测试,以阶段角度来看可以分为:

  • 单元测试:测试单一模组功能是否正确,通常是以class或method层级进行。

  • 回归测试:主要目的为测试新加入或修改的程序码是否影响原有功能,主要做法为重复执行以前的测试项目。

  • 整合测试:主要目的为测试模组与模组间的互动是否正确。

测试对於确保系统品质来说十分重要,但随着系统越来越庞大,手动测试将花费大量人力与时间,自动化测试就显得十分重要。

而Django提供的测试框架,可以协助我们完成单元测试的自动化。

测试架构

资料夹架构

Django在执行自动化测时,会自动执行当前目录下档名为test*.py格式的档案,为了方便管理,可采用此架构进行测试程序的管理:

  • 应用程序资料夹
    • tests
      • __init__.py
      • test_modes.py
      • test_forms.py
      • test_views.py

测试程序范例

from django.test import TestCase

class MyTestClass(TestCase):
  def setUpTestData(cls):
    pass
  def setUp(self):
    pass

Django的TestCase中提供了两种方法进行测试前的设定:setUpTestData()和setUp()。

  • setUpTestData():在该class测试进行前会执行一次。

  • setUp():在该class中每个测试方法执行前都会执行一次

执行自动化测试

使用以下指令即开始自动化测试:

python manage.py test

如果结果不符合,会将不符合的项目列出来。
https://ithelp.ithome.com.tw/upload/images/20211001/20141886hkN6soZXom.png

补充

今天在初次执行时,出现错误讯息:
importError: 'tests' module incorrectly imported from 路径

原因:Django的startapp建立资料夹时,会自动产生test.py档,其档案名称和教学网站的流程中建立的资料夹同名,导致执行时发生错误。

解决方法:将tests.py删除。


<<:  JS 16 - jQuery 太重了,何不选择需要的功能就好?

>>:  Leetcode: 1627. Graph Connectivity With Threshold

[Day4] 预设范例帐户:OE

这篇文将介绍资料库中的预设帐户之一OE并介绍各个表格和他们之间的关系。 纲目:所有的资料库物件。OE...

索引合并(index merge)

一般来说,Mysql只会为单一索引生成扫描区间,但还是有特殊情况会为多个索引生成扫描区间。 这种为多...

DAY23-一般页面设计

前言: 做完网站最基本的导览功能後,接下来要进入的就是我们的页面了!在制作页面的同时, 阿森也会善...

CSS微动画 - 按钮效果只有一种太单调啦!

Q: 网路上找到的看起来都很厉害,程度能比吗? A: 厉害归厉害,每个效果都适合你的网站吗? 让元...

[iT铁人赛Day13]JAVA回圈的跳离

上次说完回圈,其实还有一个回圈的范例没说到 就是巢状回圈,巢状回圈的意思是回圈叙述中又有其他回圈叙述...