Я пытаюсь увидеть, чего мне не хватает, во всяком случае, в тестовом модуле Python. Меня недавно попросили написать несколько юнит-тестов. Я новичок в области информационных технологий, и я никогда раньше не проводил юнит-тестирование. После прохождения нескольких уроков у меня появилось приличное понимание, когда речь заходит о тестировании основных функций и обеспечении работоспособности, но кто-то может, пожалуйста, взглянуть на приведенное ниже и сказать мне, если я что-то упускаю логически?
Этот юнит-тест просто гарантирует, что файл загрузится. Я не получаю ошибок (что является огромным облегчением - я работал над этим довольно долго!), Но я чувствую, что, возможно, что-то упускаю. Вот макет ниже:
Мой тест на прохождение юнитов проходит, но мне просто интересно, проверяю ли я все правильные вещи. Я не могу найти тесты юнитов, которые говорят о потенциальных логических ошибках при чтении файлов.
import unittest, os, json
class TestLoadFile(unittest.TestCase):
"""Set up unittests for loading a file."""
def setUp(self):
data = {
"name": "mike smith",
"location": "atlanta, ga",
"languages": {
"first": "python",
"second": "ruby",
"third": "javascript"
},
"salary": "75000"
}
with open('test.json', 'w', encoding='utf-8') as f:
json_info = json.dump(data, f, ensure_ascii=False, indent=4)
def tearDown(self):
os.unlink('test.json')
def test_read_file(self):
with open('test.json', 'r') as json_file:
data = json.load(json_file)
try:
test_data_1 = data['name']
test_data_2 = data['location']
test_data_3 = data['languages']['second']
test_data_4 = data['marital_status']
# Assertions
self.assertEqual(test_data_1, "mike smith")
self.assertIn("atlanta", test_data_2)
self.assertEqual(test_data_3, "ruby")
self.assertRaises(KeyError, test_data_4)
except:
pass
if __name__ == '__main__': unittest.main()
Обратите внимание, что это всего лишь макет, очевидно. Я включил только попытку / исключение, потому что она продолжала давать сбой на KeyError
, и я не был уверен, как явно обойти это без обобщения попытки / исключение. Есть ли что-то, что я не проверяю для этого, особенно если речь идет о юнит-тесте, включающем чтение файла? Я просто пытаюсь стать более сильным читателем кода, чтобы он помог мне создавать лучшие юнит-тесты.
Спасибо, большое!