#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.