Как выполняются unittests?

#python #unit-testing #python-unittest

Вопрос:

В настоящее время у меня есть скрипт, который вращает мои секретные и открытые ключи доступа AWS. В данный момент я хочу запустить unittest для одной конкретной функции.

     def get_key(self, data):
        for i in data:
            aws_access_key_id = i.get('AccessKeyId')
        return aws_access_key_id
 

Эта функция перебирает данные, которые выглядят следующим образом:

  [{'UserName': 'my.name', 'AccessKeyId': 'my access key', 'Status': 'Active'}]
 

Мой текущий тест:

     def test_get_key(self):
        data_ = old_access_retrieve_data
        expected_output = 'AKIAZJQW7MYGJNHKF22R'
        actual_output = get_key(data_)
        self.assertEqual(expected_output, actual_output)
 

Проблема, с которой я сталкиваюсь, заключается в том, что, когда я запускаю тесты, кажется, что запускается весь сценарий ротации AWS. Это означает, что он генерирует ключ AWS. Я понимал, что функция — get_key должна выполняться изолированно от остальной части сценария из-за того, как я ее вызываю.

Я совершенно неправ или я делаю что-то не так?

Комментарии:

1. Если вы импортируете файл, то этот файл будет запущен. Если в сценарии есть вещи, которые вы не хотите запускать при импорте сценария, это то if __name__ == '__main__': , для чего он предназначен.

Ответ №1:

Приложение на Python, которое выполняет ваш тестовый код, проверяет утверждения и выдает результаты тестирования в консоли, называется запускающим тест. Это точка входа в командную строку. Это означает, что если вы выполните сценарий самостоятельно, запустив python test.py в командной строке он вызовет модульный тест

Комментарии:

1. Поэтому я вызываю тест с помощью unittest. Затем я ожидаю, что он будет выполнять только ту функцию, которую я укажу. Это то, что он должен делать?