Python модульное тестирование нескольких входов - PullRequest
0 голосов
/ 25 апреля 2020

Это общий вопрос c, направленный на юнит-тестирование специально в Python. Допустимо ли размещать 20 или некоторое количество входов для проверки в словаре в качестве ключей, где значения - это ожидаемый результат, выводимый функцией?

Я не могу найти ответ после очистки inte rnet. Почти все, что я читал, было игрушечными примерами, такими как добавление чисел для получения суммы или объединение имени и фамилии. Ниже приведен еще один пример toyi sh для простого описания моего вопроса.

import unittest
import some_module

class SomeModuleUnitTest(unittest.TestCase):

    def test_some_function(self):

        input_output_dict = {
            1: 1,
            2: 4,
            3: 9,
            4: 16,
            5: 25,
            6: 36,
            7: 49,
              .
              .
              .

            20: 400
        }

        for input_case, output_expected in input_output_dict.items():
            output_actual = some_module.some_function(input_case)
            self.assertEqual(output_expected, output_actual)

Если это считается архаи c, каким будет решение Pythoni c для тестирования нескольких входов?

1 Ответ

0 голосов
/ 26 апреля 2020

Хорошо, у меня будет go. Попытка ответить на явные и неявные вопросы, которые я вижу здесь.

Это pythoni c? Если это те данные, которые у вас есть, тогда поместить их в словарь - это нормально. Если он становится очень большим, вы можете прочитать его из файла, но в этом случае это, вероятно, не требуется.

Является ли это лучшим способом проверки нескольких входов? .
Нет, есть возможности использовать параметризацию теста в тестовых средах, которые обеспечивают более качественный вывод организованный, чем в вашем примере. Наиболее часто используемый в pytest декоратор pytest.mark.parametrize.

Вам нужен такой разный ввод в тесте?
Это зависит от вашей функциональности. Если каждый из входов представляет отдельный сценарий, конечно, да. Если они представляют один и тот же сценарий, вы можете подумать о типичных и крайних случаях, но обычно вам не нужно много разных входных данных.

...