#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. Затем я ожидаю, что он будет выполнять только ту функцию, которую я укажу. Это то, что он должен делать?