February
2nd,
2015
comments powered by Disqus
测试的作用
单元测试在开发中有这些作用:
- 开发新功能时,确保写好的代码可以正常工作
- 重构、修改旧代码时,确保改动的代码不影响以前开发的功能
此外,单元测试也是持续集成的基础,所以提升代码质量,首先从单元测试开始。
django单元测试
django提供了一个测试框架,可以模拟请求、数据修改、测试输出。大致的测试代码如下:
from django.test import TestCase
class SomeTest(TestCase):
def setUp(self, *args, **kwargs):
``` init data here```
pass
def test_somefunction(self):
""" test somefunction"""
self.assertEqual(a, b)
response = self.client.post(self.token_url, self.data, format='json')
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)运行测试
测试写好后,就可以开始测试这个app下面的所有testcase
python manage.py test app_name.tests或者运行某个特定的测试用例:
python manage.py test app_name.tests.SomeTestCase数据库建立加速
django在测试的时候,会使用一个测试数据库,通常就是在数据库名字前面加上test_。如果使用mysql/postgresql,django会创建一个真实的测试数据库,需要很长的数据库建立时间。
如果测试没有涉及到mysql/postgresql特有的功能,可以用sqlite作为测试数据库,django在测试的时候会在内存中创建一个sqlite数据库,这样可以大大提高数据库的建立速度。
具体措施在settings.py中加入:
if 'test' in sys.argv:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': 'main',
'USER': 'user',
'PASSWORD': '123',
'HOST': '',
'PORT': '',
}
}django的一些测试工具
- selenium:自动化浏览器测试工具,在django下有django_selenium
- nose:扩展了python的unittest,在django下有django_nose