查看: 138|回复: 0

python单元测试编写

[复制链接]

1

主题

0

回帖

0

积分

热心网友

金币
0
阅读权限
220
精华
0
威望
0
贡献
0
在线时间
0 小时
注册时间
2010-3-10
发表于 2019-5-12 16:51:00 | 显示全部楼层 |阅读模式

  做一个简单的小实例:

  目录结构如下:

demo1.py

class MyClass():

    def __init__(self,x,y):
        self.x = x
        self.y = y

    def add(self):

        return self.x + self.y

    def sub(self):

        return self.x - self.y

 

import unittest
from unittset_demo.demo1 import MyClass


class MyclassTest(unittest.TestCase):
    def setUp(self) -> None:
        '''
        测试之前的准备工作
        :return:
        '''
        self.clac = MyClass(4,3)

    def tearDown(self) -> None:
        '''
        测试之后的收尾
        如关闭数据库
        :return:
        '''
        pass

    def test_add(self):
        ret = self.clac.add()
        self.assertEqual(ret,9)  

    def test_sub(self):
        ret = self.clac.sub()
        self.assertEqual(ret,-1)

if __name__ == '__main__':
    suite = unittest.TestSuite()
    suite.addTest(MyclassTest('test_add'))
    suite.addTest(MyclassTest('test_sub'))

    runner = unittest.TextTestRunner()
    runner.run(suite)

 

 setUp就是帮我们做测试前的准备工作,比如实例化等,

tearDown可以帮我们关闭数据库等收尾操作,

一般测试方法必须以test_开头,里面可以写我们需要测试的业务逻辑,同时指定self.assertEqual()将我们的结果和运行的实际结果进行比对。

suite就是我们的测试集,之后添加测试用例,用runner实例化运行。

 

运行结果:

如果我们将预计的结果写错,

    def test_add(self):
        ret = self.clac.add()
        self.assertEqual(ret,2)

    def test_sub(self):
        ret = self.clac.sub()
        self.assertEqual(ret,3)

运行结果:

 

  同时我们还可以在django的test文件中测试自己的用例:

class StudentTest(TestCase):

  def setUp(self);
    Student.objects.create(name='jack',age=13)

  def test_student_create(self):
    obj = Student.objects.get(name='jack')
    self.assertEqual(obj.age,18)

 

  测试是使用的模板是否正确,在terminal中输入:python manage.py test 即可测试

  class HomeTest(TestCase):

    def test_home_page_renders_home_template(self):

      response = self.client.get('/home/')   # 模拟浏览器

      self.assertEqual(response.status_code,200)

      self.assertTemplateUsed(response,'home.html')

 

  



来源:https://www.cnblogs.com/jimmyhe/p/10852764.html
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

圆梦公社,专注于为全球华人提供纯粹技术交流的地方,请勿发布任何政治及违法的言论。如有相关侵权、举报、投诉及建议等,请发 E-mail:dzh188@hotmail.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部