python单元测试编写

  做一个简单的小实例:

  目录结构如下:

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')

 

  

posted @ 2019-05-12 16:51  Jimmyhe  阅读(13608)  评论(2编辑  收藏  举报