赞
踩
写好了一个项目之后,要确定各个模块是不是稳定运行,有没有bug,比如一个项目有100个路由,可以手动一个一个URL的输入,查看响应有没有毛病,但这样不符合程序员的逼格。
由此,诞生了单元测试与集成测试。
由于单元测试可能测试模型类的增删改查,就免不了要往里面添加一些数据,但又不希望测试的数据影响现有的数据库造成影响,所以Django可以让我们配置一个测试数据库。
比如说:
DATABASES = {
'default': {
'ENGINE' : 'django.db.backends.mysql',
'HOST': 'localhost',
'PORT': '3306',
'NAME': 'django_db1', # 真实的数据库
'USER': 'root',
'PASSWORD': '12345',
'TEST':{
'NAME':'django_db_test' # 用于单元测试的数据库
}
}
}
在每个APP里面,都有一个test.py文件,可以在里面去定义测试类,并可以直接运行
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bWC9FQzu-1578390196685)(_v_images/20200107173157406_12605.png)]
from django.test import TestCase,Client from .models import User # Create your tests here. class UserTestCase(TestCase): # 相当于初始化方法 def setUp(self): pass # 测试模型类 def test_models(self): # 添加一个user对象 User( account='account1', username='name1', gender=0 ).save() # 测试,self.asserEqual接收3个参数 # (被测试对象,正确的测试结果,如果不正确输出什么) # 如果第一个参数的返回值不等于第二个参数,输出第三个参数 self.assertEqual( User.objects.filter(account='account1').count(), 1, '没有插入成功' ) # 测试首页的访问 def test_index(self): # 创建一个客户端 client = Client() # 模拟客户端访问首页 response = client.get('/') # 测试首页返回的状态码 self.assertEqual( response.status_code, 200, 'index的状态码不为200' ) if __name__ == '__main__': userTestCase = UserTestCase() userTestCase.test_models() userTestCase.test_index()
运行效果:

测试开始的时候,先创建数据库
测试完成后,删除数据库
这里
from django.test import TestCase,Client from .models import User # Create your tests here. class UserTestCase(TestCase): # 相当于初始化方法 def setUp(self): pass # 测试模型类 def test_models(self): # 添加一个user对象 User( account='account1', username='name1', gender=0 ).save() # 测试,self.asserEqual接收3个参数 # (被测试对象,正确的测试结果,如果不正确输出什么) # 如果第一个参数的返回值不等于第二个参数,输出第三个参数 self.assertEqual( User.objects.filter(account='account1').count(), 2, '没有插入成功' ) # 测试首页的访问 def test_index(self): # 创建一个客户端 client = Client() # 模拟客户端访问首页 response = client.get('/') # 测试首页返回的状态码 self.assertEqual( response.status_code, 400, 'index的状态码不为200' ) if __name__ == '__main__': userTestCase = UserTestCase() userTestCase.test_models() userTestCase.test_index()

测试数据库可以不预先创建,也可以不配置,即:
DATABASES = {
'default': {
'ENGINE' : 'django.db.backends.mysql',
'HOST': 'localhost',
'PORT': '3306',
'NAME': 'django_db1',
'USER': 'root',
'PASSWORD': '12345',
# 'TEST':{
# 'NAME':'django_db_test2' # 用于单元测试的数据库
# }
}
}
这样也行
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。