test_update_with_only_1_field
基本上,我意识到我正在为多个模型的相似 URL编写相同的测试用例 ( )
from django.test import RequestFactory, TestCase
class BaseApiTest(TestCase):
def setUp(self):
superuser = User.objects.create_superuser('test', 'test@api.com', 'testpassword')
self.factory = RequestFactory()
self.user = superuser
self.client.login(username=superuser.username, password='testpassword')
class SomeModelApiTests(base_tests.BaseApiTest):
def test_update_with_only_1_field(self):
"""
Tests for update only 1 field
GIVEN the following shape and related are valid
WHEN we update only with just 1 field
THEN we expect the update to be successful
"""
shape_data = {
'name': 'test shape',
'name_en': 'test shape en',
'name_zh_hans': 'test shape zh hans',
'serial_number': 'test shape serial number',
'model_name': {
'some_field': '123'
}
}
data = json.dumps(shape_data)
response = self.client.post(reverse('shape-list-create'), data, 'application/json')
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
some_model = response.data['some_model']
new_some_field = '12345'
data = json.dumps({'some_field': new_some_field, 'id': response.data['some_model']['id']})
response = self.client.put(reverse('some-model', args=[some_model['id']]), data, 'application/json')
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertEqual(new_some_field, response.data['some_field'])
我需要这样做超过 10 次。我已经这样做了。
每次唯一的区别是以下短语“some_model”、“some-model”和“some_field”
我想知道是否有更快的方法来做到这一点。
我可以抽象地思考两种方式:
在文本编辑器中创建一个模板,该模板可以生成最终的测试用例,然后我将其复制并粘贴。我正在使用 sublime text 3 虽然我可以切换到另一个文本编辑器
有一种方法可以让我编写更多代码,将这个测试用例转换为单个测试类可以调用的行为类。又名作曲。
哪个更有意义,或者有不同的方法可以做到这一点?
请注意,BaseApi 类也被其他没有该重复测试用例方法的测试类继承。