Python Testing - это безопасный способ написания моих тестов, чтобы избежать повторения длинных словарей в каждой тестовой функции - PullRequest
0 голосов
/ 26 февраля 2019

Я новичок в Python и экспериментирую с написанием некоторых тестов для конечной точки API.Способ, которым я издеваюсь над объектом щенка, безопасен ниже?В моих тестах все работает так, как я ожидал.Рискну ли я в будущем, когда тесты наступают друг на друга, и значение объекта, которое, как мне кажется, я тестирую, на самом деле ссылается на более старое значение в памяти?

Должен ли я использовать другую стратегию?

class PuppyTest(APITestCase):
    """ Test module for Puppy model """

    def mock_puppy(self):
        return {
            "name": "Max",
            "age": 3,
            "breed": "Bulldog"
        }

    def test_create_puppy_with_null_breed(self):
        """
        Ensure we can create a new puppy object with a null "breed" value
        """
        url = reverse('puppy')
        data = self.mock_puppy()
        data['breed'] = None # Updating breed value

        response = self.client.post(url, data, format='json')
        self.assertEqual(response.status_code, status.HTTP_201_CREATED)

    def test_create_puppy(self):
        """
        Ensure we can create a new puppy object.
        """
        url = reverse('puppy')
        data = self.mock_puppy() # returns original "breed" value "Bulldog"

        response = self.client.post(url, data, format='json')
        self.assertEqual(response.status_code, status.HTTP_201_CREATED)

1 Ответ

0 голосов
/ 26 февраля 2019

Способ, которым я издеваюсь над объектом щенка, безопасен ниже?

Да

Рискну ли я в будущем, когда тесты наступят друг на друга, и значение объекта, которое, как мне кажется, я тестирую, фактически ссылается настарое значение в памяти?

Нет

Должен ли я использовать другую стратегию?

Ваш метод в порядке, с новым диктомсоздается для каждого теста.Однако, поскольку вы используете pytest, может быть более типичным поместить эти данные в приспособление , а не в метод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...