程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

Django实用技巧-编写单元测试

发布于2019-08-22 17:59     阅读(912)     评论(0)     点赞(14)     收藏(5)


使用Django自带的单元测试模块可以对models 和views进行快速测试

1.创建单元测试

from django.test import TestCase, override_settings
from .models import User

class UserTest(TestCase):
	
	def setUp(self):  # 初始化,创建测试数据
		User.objects.create(name='fei', age=1) 
	
	@override_settings(DEBUG=False) # 装饰器用于重写配置文件中的相关变量
	def test_model(self): # models测试
		user = User.objects.filter(name='fei')[0]
		self.assertEqual(user.age, 1)    # 断言,判断是否相等
	
	def test_get(self):  # views测试,get请求
		
		response = self.client.get('/user/', {'name': 'fei'})  # 模拟客户端发送get请求
		self.assertEqual(response.status_code, 200, 'user-get測試失敗')
		print(response.json())  # 输出响应得到的JSON数据
		
	def test_post(self):  # views测试,post请求
		
		params = {
			'name': 'fei',
			'age': 20,
		}
		
		response = self.client.post('/user/', params)  #模拟客户端发送post请求
		self.assertEqual(response.status_code, 200, 'user-post測試失敗')')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

2.启动单元测试

>> python manage.py test  # 运行所有的单元测试
>> python manage.py test user # 只运行user下的单元测试
>> python manage.py test --keepdb  #  保留测试数据库,可以提高测试代码的运行效率
>> python manage.py test --setting settings_test -v3  # -v {1,2,3} 数字越大,显示的输出越详细,测试的日志信息
  • 1
  • 2
  • 3
  • 4

3.响应的常用属性 - response

response.status_code  # 响应状态码
response.content()  # 响应体
response.context() # 响应文本
response.json()  # 响应得到的json数据
  • 1
  • 2
  • 3
  • 4

4.session 和 cookie 设置

def init_client(user):
    client = Client()
    s = client.session
    s['cur_user_id'] = user.id
    s.save() 
	return client
	
def test_something(self):
    session = self.client.session
    session['somekey'] = 'test'
    session.save()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

5.常用断言 - assert

self.assertEqual(self, first, second, msg=None) # 判断是否相等
self.assertAlmostEqual(self, first, second, places=None, msg=None,
                          delta=None) # 判断是否大概相等
self.assertTrue(self, expr, msg=None)  # 判断是否为真
  • 1
  • 2
  • 3
  • 4


所属网站分类: 技术文章 > 博客

作者:38373

链接:https://www.pythonheidong.com/blog/article/53391/2b6709ca0885f2fe6b53/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

14 0
收藏该文
已收藏

评论内容:(最多支持255个字符)