Python2.7で書かれたプログラムのユニットテスト?
プログラミング初心者です。
コードが荒かったり、記載におかしな点が、あると思いますが、ご指摘お願いいたします。
OpenStackのSwiftをPythonで操作するプログラムのユニットテストを行うプログラムの作成を命令されました。
Swiftの概要 ~ Swiftによるオブジェクトストレージシステムの構築(1)
※OpenStackSwiftについて
下記のコードをどのようにテストすればよいのかわかりません。
どのような観点でどうテストした方が良いのかをコードと一緒にまとめたものをください。
プログラムの内容
Python2.7のswiftclientモジュールで
既存のコンテナからオブジェクトをダウンロードし
既存の別コンテナにダウンロードしたファイルをアップロードする
※ユーザー名、パスワード、ドメイン名は全て、てきとーです。
ソースコード
# -*- coding: utf-8 -*-.
from swiftclient import *
import sys
import os
#エンドポイント(keystoneのURL)
IDENTITY_EP = "https://HONYARARA_NANTOKAKONTOKA"
#格納先定数コンテナ
PUT_CONTAINER = "HONYARARA"
class swift_copy(object):
def execute(self):
#keystoneに送るプロジェクト名とドメイン名を指定
os_options = {
'project_name': 'test',
'project_domain_name': 'HONYARARA',
'user_domain_name': 'HONYARARA',
}
#keystoneにendpointとos_optionsで指定した情報とユーザー名パスワードを送って
#swiftのURLとtoken(認証キー)を取得
url, token = get_auth(IDENTITY_EP,
'HONYARARA6',
'HONYARARA6_2',
username='HONYARARA6',
password='HONYARARA6_2',
auth_version=3,
os_options=os_options,
insecure=True)
#デバック用納品時に削除
print "storage url:%s" % url
print "token :%s" % token
#swiftのtokenとurlを接続情報として、変数「s」に格納
s = Connection(preauthtoken=token, preauthurl=url, insecure=True)
#「scon」変数に格納されたコンテナ名がswiftに存在するかの確認
#存在が確認できなかった場合、exceptの処理を実行して警告をコンソールに表示後
#このプログラムの処理を終了する
try:
s.head_container(PUT_CONTAINER)
except ClientException:
print("コンテナ"+PUT_CONTAINER+"は存在しませんでした")
sys.exit()
#「scon」変数に格納されたコンテナ名がswiftに存在した場合の処理
#copy_target.txtファイルの内容を取得
with open('C:\copy_target.txt') as f:
#ファイルの内容を上から一行ずつ末尾まで、繰り返し、読み込む
#一行の内容は変数「line」に格納される
for line in f:
#読み込んだ変数「line」に格納された文字列から
#改行文字をstripで削除し、「/」でリストに分けた情報を変数「l」リストに格納する
#例 line = 'HONYARARA1/A' #l = line.strip().split('/')
#lのリストは['HONYARARA1','A']このように格納されるされるようになる
l = line.strip().split('/')
#.replace('\n', '')
#接続情報を使って、get_object(コンテナ名,オブジェクト名)を指定
#get_objectはオブジェクト情報を取得する為
#l[-1]の添字の意味はリストの末尾を指定する際に使う
#.lower()の意味は、小文字に変換する
#コンテナまたはオブジェクトが見つからなかった場合、次の行の処理にはいる
try:
resp_headers, obj_contents = s.get_object(l[0], l[-1])
except ClientException:
print("該当の"+l[0]+"または"+l[-1]+"は見つかりませんでした")
continue
#オブジェクトを取得できた場合
#変数「tmpf」に以下の内容を格納する
#"保存先ディレクトリ"+リスト「l[-1].lower()」".txt"を連結する
tmpf = "D://tmp/"+l[-1]+".txt"
#変数「tmpf」の保存先パスにswiftの「l[-1].lower()」オブジェクトを書き出し
with open(tmpf, 'w') as local:
local.write(obj_contents)
#変数「scon」コンテナに変数「tmpf」に保存したオブジェクトを書き出し
#うまくいかない場合、警告をコンソールに出した後、
#変数「tmpf」のディレクトリを空にして、次の行の処理へ移行
try:
resp_headers, s.put_object(PUT_CONTAINER ,l[-1],tmpf)
except ClientException:
print(l[-1]+".txtを保存できませんでした")
os.remove(tmpf)
if __name__ == '__main__':
idwn = swift_copy()
idwn.execute()