将pytest参数与DRF测试一起使用

时间:2018-09-14 12:47:56

标签: django django-rest-framework pytest django-testing pytest-django

现在我有这样的代码:

from rest_framework.test import APITestCase

class MyTestClass(ApiTestCase):
    fixtures = ['some_fixtures.json', ]

    @pytest.mark.parametrize('field, reverse_ordering', [
        ('id', False),
        ('id', True)])
    def test_ordering(self, field, reverse_ordering):
        # some test function

每次都因该错误而失败:

======================================================================
ERROR: test_ordering (my_module.tests.MyTestClass)
----------------------------------------------------------------------
TypeError: test_ordering() missing 2 required positional arguments: 'field' and 'reverse_ordering'

如何在DRF测试类的@pytest.mark.parametrize内部测试中使用APITestCase装饰器?
也许还有另一种参数化测试的方法(但不是循环)?

1 个答案:

答案 0 :(得分:3)

ApiTestCaseunittest.TestCase的子类,它不支持pytest docs中提到的参数化:

  

以下pytest功能可在unittest.TestCase子类中使用:

     
      
  • 标记:skip,skipif,xfail;
  •   
  • 自动使用的灯具;
  •   
     

以下pytest   功能不起作用,可能由于不同的设计而永远不会起作用   哲学:

     
      
  • 固定装置(自动使用的固定装置除外,请参见下文);
  •   
  • 参数化;
  •   
  • 自定义钩子;
  •   
     

第三方插件可能无法正常运行,具体取决于   在插件和测试套件上。