をboto3使用してS3にファイルを、私はこの機能を持っているが、アップロード機能のためのユニットテストを作ります私がこれまでに書くことができるもの:はS3バケットにアーカイブファイルをアップロード
class TestUploadFilesToS3(unittest.TestCase):
""" Tests unitaires upload_file_to_s3_bucket"""
def setUp(self):
conf.LOG_FILE = "/tmp/test.log"
conf.BUCKET_OUTPUT="name.of.the.bucket"
conf.Conf.get_level_log()
self.log = logger(conf.LOG_FILE, conf.LEVEL_LOG).logger
tools.create_workdir(self.log)
conf.WORKDIR = os.path.join(conf.LOCAL_DIR, "files/output")
archive = "file_archive.tar.gz"
archivePath = "/tmp/clients/file_archive.tar.gz"
_aws = None
def tearDown(self):
tools.delete_workdir(self.log)
os.remove(conf.LOG_FILE)
def test_upload_file_to_s3_bucket_success(self):
self._aws.upload_file_to_s3_bucket(conf.BUCKET_OUTPUT, archivePath, archive, self._log)
は、ユニットテストを行うために、私はアサートが、私がテスト機能test_upload_file_to_s3_bucket_success
に使用すべき機能しているかわからないと私は正確に何を比較する必要があります。 たとえば、ファイルのURLが存在するかどうかをテストできますか?何か案は? はありがとう
ありがとうございます@Vorsprung非常に助けている。 '== エラー:test_upload_file_to_s3_bucket_success(__main __。TestUploadFilesToS3) ClientError:GetObject操作を呼び出すときにエラー(NoSuchKey)が発生しました:指定されたキーが存在しません。 ' – JavaQueen
実際、私はこのエラーを解決しましたが、アップロードコールの下にresponse = obj.get()を入れました。今度は、ファイルとS3からのオブジェクトの長さが同じでないため、テストが失敗したというエラーが表示されます: 'self.assertEqual(response ['ContentLength']、len(self.archive)) AssertionError:141! = 34 ' – JavaQueen
解決済み。私はlen(contentsOfFile)をos.path.getsize(contentsOfFile)に変更しました。 – JavaQueen