Fixtures在Django测试中的使用

在对Django项目做单元测试时,经常需要生成或者导入一些初始数据。对于已经有数据存在于正式数据库的app来说,使用Fixture 载入数据,是最简便有效的方法。

阅读全文

  • 首先,你需要一份json格式的数据文件,Django对此提供了很好的支持—dumpdata 命令

    "python manage.py dumpdata myapp >myapp/fixtures/myapp.json"

    这个命令将帮助你把数据库中myapp 导入到myapp/fixtures/myapp.json中。

  • 然后在setting.py中加入:

    FIXTURE_DIRS = ('/path/to/api/fixtures/',)
  • 接着在test.py中 加入:

    fixtures = ['myapp.json']
  • 最后么当然是运行test命令了:

    ./manage.py test myapp

下面贴出一个测试用例的完整代码:

class TestFilterDeleteBiz(TestCase):
        fixtures = ['bizs.json']
        def setUp(self):
            pass
        def test_tolist_should_equal_filterdbizs(self):
            delete_bizs = SETTINGS.DELETE_BIZCHANNEL
            bizs = BizChannel.objects.exclude(name__in=delete_bizs)
            append_user(bizs)
            check_email_addrs = [ b.user['email'] for b in bizs]
            to_list = get_TO_list()
            is_equal = to_list == check_email_addrs
            self.assertTrue(is_equal, "sorry ")
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的示例,演示如何使用 Django 自带的测试框架或 Python 标准库 unittest 编写测试用例,包括测试类和测试方法。 ```python # 导入 unittest 模块 import unittest # 导入 Django 的 TestCase 类 from django.test import TestCase # 导入模型类 from myapp.models import MyModel # 编写一个测试类,继承自 Django 的 TestCase 类 class MyModelTestCase(TestCase): # 设置测试固件,即测试数据 fixtures = ['mytestdata.json'] # 编写测试方法,测试模型类的保存方法 def test_save_method(self): # 创建一个模型实例 mymodel = MyModel.objects.create(title='Test Model', content='Test Content') # 断言模型实例的标题和内容与保存的一致 self.assertEqual(mymodel.title, 'Test Model') self.assertEqual(mymodel.content, 'Test Content') # 编写测试方法,测试模型类的查询方法 def test_query_method(self): # 查询数据库的所有模型实例 mymodels = MyModel.objects.all() # 断言查询结果的长度与期望的一致 self.assertEqual(len(mymodels), 1) # 断言模型实例的标题和内容与期望的一致 self.assertEqual(mymodels[0].title, 'Test Model') self.assertEqual(mymodels[0].content, 'Test Content') # 编写一个普通的测试类,继承自 unittest.TestCase 类 class MyTest(unittest.TestCase): # 编写测试方法,测试两个数字相加的函数 def test_add_function(self): result = add(2, 3) self.assertEqual(result, 5) # 定义一个相加函数 def add(a, b): return a + b ``` 在上面的代码,我们定义了一个测试类 `MyModelTestCase`,继承自 Django 的 `TestCase` 类,然后编写了两个测试方法,分别测试模型类的保存和查询方法。在测试过程,我们使用测试固件来提供测试数据,使用了断言来验证测试结果和期望值的一致性。 此外,我们还定义了一个普通的测试类 `MyTest`,继承自 Python 标准库 `unittest.TestCase` 类,然后编写了一个测试方法,测试两个数字相加的函数。在测试过程,我们使用了断言来验证测试结果和期望值的一致性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值