详解Django中的unittest及应用

目录
  • 关于断言
  • unittest模块属性说明
    • unittest的属性
    • TestCase类的属性
    • TextTextRunner的属性
  • unittest框架使用

unittest是python的一个单元测试框架

关于断言

它是用于对一个确定结果和预测结果的一种判断,如果结果正确无任何返回效果,如果结果错误;会抛出AssertionError 异常,如果后面跟了msg则返回msg内容

assert 2 == 2
assert 2 == 1 * 2
assert 2 + 0 == 1 * 2
# ----------------- 以上无任何返回效果

assert 1 > 3, 'wrong'
'''
Traceback (most recent call last):
  File "D:/project_of_3期课程/day22/类.py", line 259, in <module>
    assert 1 > 3, 'wrong'
AssertionError: wrong
'''

unittest模块属性说明

unittest的属性

unittest.main():使用它可以方便的将一个单元测试模块变为可直接运行的测试脚本,main()方法使用TestLoader类来搜索所有包含在该模块中以“test”命名开头的测试方法,并自动执行他们。执行方法的默认顺序是:根据ASCII码的顺序加载测试用例,数字与字母的顺序为:0-9,A-Z,a-z。所以以A开头的测试用例方法会优先执行,以a开头会后执行。

unittest.TestSuite():unittest框架的TestSuite()类是用来创建测试套件的。

unittest.TextTextRunner():unittest框架的TextTextRunner()类,通过该类下面的run()方法来运行suite所组装的测试用例,入参为suite测试套件。

TestCase类的属性

setUp():方法用于测试用例执行前的初始化工作。如测试用例中需要访问数据库,可以在setUp中建立数据库连接并进行初始化。如测试用例需要登录web,可以先实例化浏览器。

tearDown():方法用于测试用例执行之后的善后工作。如关闭数据库连接。关闭浏览器。

assert*():一些断言方法,在执行测试用例的过程中,最终用例是否执行通过,是通过判断测试得到的实际结果和预期结果是否相等决定的。

assertEqual(a,b,[msg='测试失败时打印的信息']):断言a和b是否相等,相等则测试用例通过。

assertNotEqual(a,b,[msg='测试失败时打印的信息']):断言a和b是否相等,不相等则测试用例通过。

assertTrue(x,[msg='测试失败时打印的信息']):断言x是否True,是True则测试用例通过。

assertFalse(x,[msg='测试失败时打印的信息']):断言x是否False,是False则测试用例通过。

assertIs(a,b,[msg='测试失败时打印的信息']):断言a是否是b,是则测试用例通过。

assertNotIs(a,b,[msg='测试失败时打印的信息']):断言a是否是b,不是则测试用例通过。

assertIsNone(x,[msg='测试失败时打印的信息']):断言x是否None,是None则测试用例通过。

assertIsNotNone(x,[msg='测试失败时打印的信息']):断言x是否None,不是None则测试用例通过。

assertIn(a,b,[msg='测试失败时打印的信息']):断言a是否在b中,在b中则测试用例通过。

assertNotIn(a,b,[msg='测试失败时打印的信息']):断言a是否在b中,不在b中则测试用例通过。

assertIsInstance(a,b,[msg='测试失败时打印的信息']):断言a是是b的一个实例,是则测试用例通过。

assertNotIsInstance(a,b,[msg='测试失败时打印的信息']):断言a是是b的一个实例,不是则测试用例通过。

TextTextRunner的属性

run():是运行测试套件的测试用例,入参为suite测试套件。

unittest.TextTestRunner(verbosity=2).run(suite)

unittest框架使用

方式一:unittest.main()来启动单元测试模块

# coding=utf-8
import unittest
# 方式一:unittest.main()来启动单元测试模块
class MyTestCase(unittest.TestCase):
    def setUp(self):
        print('测试环境')

    def test(self):
        print('测试用例')
        self.assertEquals(4, 2 * 2)
        self.assertEqual(1, 3, 'something was wrong')
    def tearDown(self):
        print('环境销毁')
if __name__ == '__main__':
    unittest.main()

方式二:添加到testsuite集合中,再加载所有的被测试对象

# coding=utf-8<br>import unittest<br><br>class TestCase(unittest.TestCase):
    def test1(self):
        print('one')

    def test2(self):
        print('two')

class TestCase1(unittest.TestCase):
    def test1(self):
        print('three')

    def test2(self):
        print('four')

if __name__ == '__main__':
    un1 = unittest.TestLoader().loadTestsFromTestCase(TestCase)
    un2 = unittest.TestLoader().loadTestsFromTestCase(TestCase1)

    suite = unittest.TestSuite([un1, un2])
    unittest.TextTestRunner(verbosity=2).run(suite)

到此这篇关于Django中的unittest及应用的文章就介绍到这了,更多相关Django unittest应用内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Django使用unittest模块进行单元测试过程解析

    Django测试框架非常简单,首选方法是使用python标准库中的unittest模块. Writing tests Django的单元测试使用python的unittest模块,这个模块使用基于类的方法来定义测试.类名为django.test.TestCase,继承于python的unittest.TestCase. from django.test import TestCase from myapp.models import Animal class AnimalTestCase(Tes

  • Django unittest 设置跳过某些case的方法

    按理说unittest 中是不应该测试那种外部依赖很强的用例,但是呢,有时候有些接口总是调试好之后怕忘了,就写了一些简单的测试case,想要通过在settings中增加一些配置来开启和关闭这些case,这样的话就可以在正常跑单元测试的时候隔离开这些不怎么正规的测试用例. 环境 * Django1.8 * Python2.7.x unittest 中提供了这么一个装饰器,用起来也很简单.这里是一个百度地图的地理编码API,只想在某些时候跑这个case. 在settings中 test 配置部分增加

  • 详解Django中的unittest及应用

    目录 关于断言 unittest模块属性说明 unittest的属性 TestCase类的属性 TextTextRunner的属性 unittest框架使用 unittest是python的一个单元测试框架 关于断言 它是用于对一个确定结果和预测结果的一种判断,如果结果正确无任何返回效果,如果结果错误:会抛出AssertionError 异常,如果后面跟了msg则返回msg内容 assert 2 == 2 assert 2 == 1 * 2 assert 2 + 0 == 1 * 2 # ---

  • 详解django中Template语言

    Django是一个开放源代码的Web应用框架,由Python写成.采用了MTV的框架模式,即模型M,视图V和模版T.它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件.并于2005年7月在BSD许可证下发布.这套框架是以比利时的吉普赛爵士吉他手Django Reinhardt来命名的. 下面看下本文重点给大家介绍的django中Template语言,详情如下: Template本身也有自己的语言和语法,用来处理简单的数据显示 1.常用语法 判断

  • 详解Java 中的UnitTest 和 PowerMock

    学习一门计算机语言,我觉得除了学习它的语法外,最重要的就是要学习怎么在这个语言环境下进行单元测试,因为单元测试能帮你提早发现错误:同时给你的程序加一道防护网,防止你的修改破坏了原有的功能:单元测试还能指引你写出更好的代码,毕竟不能被测试的代码一定不是好代码:除此之外,它还能增加你的自信,能勇敢的说出「我的程序没有bug」. 每个语言都有其常用的单元测试框架,本文主要介绍在 Java 中,我们如何使用 PowerMock,来解决我们在写单元测试时遇到的问题,从 Mock 这个词可以看出,这类问题主

  • 详解Django中views数据查询使用locals()函数进行优化

    优化场景 利用视图函数(views)查询数据之后可以通过上下文context.字典.列表等方式将数据传递给HTML模板,由template引擎接收数据并完成解析.但是通过context传递数据可能就存在在不同的视图函数中使用重复的查询语句,所以可以通过将重复查询语句设置全局变量,配合locals()函数进行数据查询与传递. 优化前 def index(request): threatname = '威胁情报展示' url = 'www.testtip.com' allthreat = Threa

  • 详解Django中异步任务之django-celery

    Celery文档参考:http://docs.jinkan.org/docs/celery/ 参考文章:https://www.jb51.net/article/158046.htm Django中异步任务---django-celery Celery简单介绍: celery使用场景: 耗时任务定时任务 请求结果不怎么重要的 耗时任务比如:发送短信验证码我们可以先发送给客户任务状态(请求成功或失败) 请求结果重要的建议使用django实现 比如:支付 首先简单介绍一下,Celery 是一个强大的

  • 详解Django中的FBV和CBV对比分析

    在学习Django过程中在views.py进行逻辑处理时接触到了两种视图的书写风格,FBV和CBV FBV 指 function based views,即基于函数的视图 CBV 指 class based views,即基于类的视图 基于类的视图相较于基于函数的视图可以更加便利的实现类的继承封装等.在日常使用的时候,二者的区别主要在于对于request的请求方法的处理方式 FBV 我们通过函数传入的request的method来判断客户端发起的是什么请求,并进行相应的操作,返回相应的数据. d

  • 详解Django中CSRF和CORS的区别

    目录 一.CSRF:保护机制 二.CORS:跨域访问 一.CSRF:保护机制 Django预防CSRF攻击的方法是在用户提交的表单中加入一个csrftoken的隐含值,这个值和服务器中保存的csrftoken的值相同,这样做的原理如下: 1.在用户访问django的可信站点时,django反馈给用户的表单中有一个隐含字段csrftoken,这个值是在服务器端随机生成的,每一次提交表单都会生成不同的值 2.当用户提交django的表单时,服务器校验这个表单的csrftoken是否和自己保存的一致,

  • 详解Django 中是否使用时区的区别

    起步 在 Django 的模型中新加了一个日期的字段: import datetime class Instance(models.Model): ... start_time = models.DateTimeField(default=datetime.datetime.now) 同步到数据库时 Django 报出了一个警告: django/db/models/fields/__init__.py:1423: RuntimeWarning: DateTimeField Instance.st

  • 详解django中url路由配置及渲染方式

    今天我们学习如何配置url.如何传参.如何命名.以及渲染的方式,内容大致有以下几个方面. 创建视图函数并访问 创建app django中url规则 捕获参数 路径转换器 正则表达式 额外参数 渲染方式 创建视图并访问 项目中自带的Python文件中,并没有带有视图,因此我们自己创建一个,通常,我们把视图命名views.py. 然后在views.py中,导入头文件 from django.http import HttpResponse 然后我们在views.py中,写一些Python函数,用来访

  • 详解django中使用定时任务的方法

    今天介绍在django中使用定时任务的两种方式. 方式一: APScheduler 1)安装: pip install apscheduler 2)使用: from apscheduler.scheduler import Scheduler from django.core.cache import cache # 实例化 sched = Scheduler() # 每30秒执行一次 @sched.interval_schedule(seconds=30) def sched_test():

随机推荐