2 python api unit-testing django-rest-framework
对于不同的测试用例类的文档是在这里
我不确定我将使用每个测试用例类的情况:
正如Django Rest Framework Docs中所解释的那样,3个可用的测试类只是扩展了常规的Django测试类,但是切换了要使用的客户端APIClient
.
这也可以在Django Rest Framework源代码中看到
class APITransactionTestCase(testcases.TransactionTestCase):
client_class = APIClient
class APITestCase(testcases.TestCase):
client_class = APIClient
class APISimpleTestCase(testcases.SimpleTestCase):
client_class = APIClient
Run Code Online (Sandbox Code Playgroud)
你应该知道的第一个测试用例是APISimpleTestCase
允许我们测试一般的DRF/Django事情,比如http重定向和检查一些可调用引发异常.文档指出我们APISimpleTestCase
在对数据库进行任何测试时都不应该使用.
我们不应该使用APISimpleTestCase
数据库的原因是因为测试数据将跨多个测试保留在数据库中.为了解决这个问题,我们必须使用APITransactionTestCase
哪些将使用atomic()
块来包装事务中的测试,并允许测试运行器在每次测试开始时回滚数据库,从而允许对数据库相关操作进行简单的原子测试.它还添加了一些与数据库断言相关的额外断言方法,例如assertNumQueries
.
最后,APITestCase
用2 atomic()
个块包装测试,一个用于整个测试类,一个用于类中的每个测试.这基本上会阻止测试更改数据库以进行其他测试,因为事务在每次测试结束时回滚.通过atomic()
在整个测试类中使用第二个块,特定的数据库事务行为可能很难测试,因此您需要回退使用APITransactionTestCase
.
归档时间: |
|
查看次数: |
1182 次 |
最近记录: |