Сравнительный анализ PyTest — объект не имеет атрибута «startTest»

#python #python-3.x #pytest #attributeerror

Вопрос:

Я пытаюсь сравнить несколько функций с различными файлами JSON с помощью Pytest. Первая часть теста выдает все ошибки атрибутов, а вторая показывает, что все тесты прошли, но без тестов.

В настоящее время используется Python 3.6.9 и PyTest 6.1.2.

Я вызываю контрольные показатели с помощью этой команды:

 python3 -m pytest aesEncrypted.py  

И это следующий код:

 class Lab14(unittest.TestCase):    def encryptSmallPayload(self):  L14 = Lab14()  print("n Small Payload. n")   with open('plaintextPayloadShort.json', 'r') as inFile:  payload = json.dumps(inFile.read())  L14.writeOut(L14.encryptPayload(payload), "encryptedPayloadShort.aes")   def test_encryptPayload_short(benchmark):  L14 = Lab14()  benchmark(L14.encryptSmallPayload)   def test_encryptPayload_medium(benchmark):  L14 = Lab14()  print("n Medium Payload. n")   with open('plaintextPayloadMedium.json', 'r') as inFile:  payload = json.dumps(inFile.read())  benchmark(L14.writeOut(L14.encryptPayload(payload), "encryptedPayloadMedium.aes"))   def test_encryptPayload_long(benchmark):  L14 = Lab14()  print("n Large Payload. n")   with open('plaintextPayloadLong.json', 'r') as inFile:  payload = json.dumps(inFile.read())  benchmark(L14.writeOut(L14.encryptPayload(payload), "encryptedPayloadLong.aes"))    def encryptPayload(self, payload):  try:  pad = b' '  obj = AES.new('This is a key123'.encode("utf8"), AES.MODE_CBC, 'This is an IV456'.encode("utf8"))  plaintext = payload.encode('utf-8')  print("Payload:n", plaintext)  length = 16 - (len(plaintext) % 16)  plaintext  = length * pad  print("Length: ", length)  return obj.encrypt(plaintext)  except Exception as exc:  print("Error performing encryption: n", exc, "n")  return exc   def writeOut(self, payload, name):  try:   print("Writing file...")  with open(name, 'wb') as outFile:   outFile.write(payload)  print("Wrote payload to AES file")  return True  except Exception as exc:  print('nError writing payload to file.', exc, 'n')  return exc  

Выход:

 FAILED aesEncrypted.py::Lab14::test_encryptPayload_long - AttributeError: 'bool' object has no attribute 'startTest' FAILED aesEncrypted.py::Lab14::test_encryptPayload_medium - AttributeError: 'bool' object has no attribute 'startTest' FAILED aesEncrypted.py::Lab14::test_encryptPayload_short - AttributeError: 'function' object has no attribute 'startTest'  

Я постоянно получаю ошибку атрибута относительно «startTest» в каждой строке, в которой вызывается тест. У кого-нибудь есть какие-нибудь указания?

Я также пытаюсь сделать то же самое с расшифровкой, которая говорит, что она прошла, но не отображает ни один из моих тестов:

 import unittest from Crypto.Cipher import AES    class Lab14d(unittest.TestCase):  def test_decrypt_short(benchmark):  print("n Small Payload. n")  with open('encryptedPayloadShort.aes', 'rb') as inFile:  encryptedPayload = inFile.read()  print("Read in: ", encryptedPayload)  L14 = Lab14d  benchmark(L14.decryptPayload(L14, encryptedPayload))  def test_decrypt_medium(benchmark):  L14 = Lab14d  print("n Medium Payload. n")  with open('encryptedPayloadMedium.aes', 'rb') as inFile:  encryptedPayload = inFile.read()  print("Read in: ", encryptedPayload)  benchmark(L14.decryptPayload(L14,encryptedPayload))  def test_decrypt_long(benchmark):  L14 = Lab14d  print("n Long Payload. n")  with open('encryptedPayloadLong.aes', 'rb') as inFile:  encryptedPayload = inFile.read()  print("Read in: ", encryptedPayload)  benchmark(L14.decryptPayload(L14,encryptedPayload))  def decryptPayload(self, cipherPayload):  try:  dObj = AES.new('This is a key123'.encode("utf8"), AES.MODE_CBC, 'This is an IV456'.encode("utf8"))  dText = dObj.decrypt(cipherPayload)  print("Decrypted: n", dText.decode("utf8"))  except Exception as exc:  print('nError performing decryption.', exc, 'n')  return exc  

This results in blank output, even though it says it passes. Output for second code

Any help is SUPER appreciated.