美文网首页
Django 单元测试

Django 单元测试

作者: LeeDa李 | 来源:发表于2018-10-18 17:36 被阅读0次

    Django自带单元测试的模块django.test,该模块使用了Python的标准库unitest,基于类的方法来进行测试。该模块中包含了名为TestCase的测试类,该类继承自unitest.TestCase

    在使用时,我们需要在各APP文件夹下中的test.py文件里从django.test中引入TestCase类,从该类中派生我们的测试类并定义我们的测试方法。

    测试类设计完成之后,我们通过以下命令来进行测试:

    python manage.py test
    

    运行该命令后,测试程序会在本项目中所有以test开头的文件中查找测试用例,即TestCase的子类,然后自动运行测试用例中的测试方法。

    此外,在运行测试程序时,系统会创建一个临时的数据库,之后的所有数据库操作都是在这个临时数据库中进行的,测试完成之后再删除这个临时数据库,保证了不会造成数据污染。

    一个测试样例的例子:

    from django.test import TestCase
    from myapp.models import Animal
    
    class AnimalTestCase(TestCase):
        def setUp(self):
            Animal.objects.create(name="lion", sound="roar")
            Animal.objects.create(name="cat", sound="meow")
    
        def test_animals_can_speak(self):
            """Animals that can speak are correctly identified"""
            lion = Animal.objects.get(name="lion")
            cat = Animal.objects.get(name="cat")
            self.assertEqual(lion.speak(), 'The lion says "roar"')
            self.assertEqual(cat.speak(), 'The cat says "meow"')
    

    AnimalTestCase(TestCase)类中,我们在setUp方法中对model等测试数据进行初始化,而下面定义的test_animals_can_speak则是将要执行的测试代码。在测试代码中,我们可以assertEqual等断言函数来判断我们的业务代码中是否存在错误。

    在涉及到Http请求的业务,我们在进行测试时可以使用django.test.Client类的实例来模拟发送GET或POST请求到相应的URL,然后检查服务端的返回状态是否正确。

    参考资料

    相关文章

      网友评论

          本文标题:Django 单元测试

          本文链接:https://www.haomeiwen.com/subject/zmtszftx.html