pythonインターフェース自動化フレームワークの実戦
pythonインターフェーステストの原理は説明しません。
まずカタログを見てください。この枠組みは簡単かもしれませんが、スズメは小さいながら、五臓がそろっています。
各フォルダの下のファイルは以下の通りです。
一.考えを整理する
この自動化の枠組みは何を実現しますか?
1.エクセルからテスト用の例を抽出する
2.テストレポートの出力、そしてテストレポートは実行するテスト用例の数量、成功の数量、失敗の数量及びどの成功したかを含みます。失敗したのはどれですか?失敗の原因は何ですか?テスト結果の全体像をグラフで表します。
3.テストレポートはどのような形で出力しますか?エクセルですか?それともhtmlですか?それとも他のものですか?ここでエクセルを選びました。
4.プロファイルの配置にはどのようなものが必要ですか?
5.どのようなものが公共関数に入れて直接呼び出されますか?
はい、これらの考えは理にかなってから着手できます。
二.まず配置ファイルとエクセルテスト用例の設計です。
データとコードが分離されています。つまりデータ性の必要性は配置ファイルとして随時修正できます。インタフェースurl、サイト登録権限認証情報、データベース情報。すべてconfigフォルダに保存します。
以下は具体的なプロファイル情報です。
API_url.txt
notesはテスト用例の要約です。
三.パブリック関数は、comonフォルダの下にあります。
ゲットするauthorization.py
test_inserthouse.py
本来は、実行ファイルをHDapi-aut-testのルートファイルの下に個別に置きたいのですが、テストを通過した数と不合格の数をテストレポートに書き込むと、必ず公的関数を呼び出す方法が必要です。ルートフォルダの下に置いてあるので、公共関数とは隔たっています。だから、実行ファイルをテスト用のフォルダに置かなければなりません。ファイル名はやはり分かりやすくて、探しやすいです。また、メールを自動で送る機能も加えたいです。ここでは書きません。実はメールを送るのは簡単です。いくつかの例を探してもいいです。ps:コードはlowです。パッケージもなく、直接暴力で簡単に実行します。コードは以下の通りです
もともと生成した写真をエクセルテストレポートに入れたいですが、能力が限られていて、画像を入れられませんでした。知能は単独で一つのpngファイルに保存しました。
グラフの概要:
excelテスト報告状況:
ここで、pythonインタフェースの自動化の枠組みについての文章を紹介します。これまでの文章を検索したり、下記の関連記事を見たりしてください。これからもよろしくお願いします。
まずカタログを見てください。この枠組みは簡単かもしれませんが、スズメは小さいながら、五臓がそろっています。
各フォルダの下のファイルは以下の通りです。
一.考えを整理する
この自動化の枠組みは何を実現しますか?
1.エクセルからテスト用の例を抽出する
2.テストレポートの出力、そしてテストレポートは実行するテスト用例の数量、成功の数量、失敗の数量及びどの成功したかを含みます。失敗したのはどれですか?失敗の原因は何ですか?テスト結果の全体像をグラフで表します。
3.テストレポートはどのような形で出力しますか?エクセルですか?それともhtmlですか?それとも他のものですか?ここでエクセルを選びました。
4.プロファイルの配置にはどのようなものが必要ですか?
5.どのようなものが公共関数に入れて直接呼び出されますか?
はい、これらの考えは理にかなってから着手できます。
二.まず配置ファイルとエクセルテスト用例の設計です。
データとコードが分離されています。つまりデータ性の必要性は配置ファイルとして随時修正できます。インタフェースurl、サイト登録権限認証情報、データベース情報。すべてconfigフォルダに保存します。
以下は具体的なプロファイル情報です。
API_url.txt
inserthouse=http://IP:port/scp-mdmapp/house/insertHouse
deletehouse=http://IP:port/scp-mdmapp/house/deleteHouse
batchdeletehouse=http://IP:port/scp-mdmapp/house/batchdeleteHouse
gethouse=http://IP:port/scp-mdmapp/house/getHouse
updatehouse=http://IP:port/scp-mdmapp/house/updateHouse
Authortions.txt
joxNTIxMTg3MTA3fQ.JyeCMMsM0tOr7exORUNpkZ-FtprjpNBhMtFjUAdnYDnhRfaR6qi3fqVkybyb245zONiTxLOw8jBR60oNUVEbKx9_cut6uDIZMUFYOx6hyyBkY9IXJlutYdo4sSMAKF_MjKsZY7bZNXLHzN0juiezn6iN0hbnbhS-Kv2LYLLZLTs
私のテストケースの設計は以下の通りです。notesはテスト用例の要約です。
三.パブリック関数は、comonフォルダの下にあります。
ゲットするauthorization.py
#
def get_Authorization():
fp = open('D:\person\learn\py\HDapi\config\Authorization.txt')
info = fp.read()
fp.close()
return info
public.py
import os,xlrd,xlwt,time
# url
def get_url(api_name):
fp = open('D:\person\learn\py\HDapi\config\API_url.txt')
# url
api_infos = fp.readlines()
fp.close()
# for url, url
for api in api_infos:
#
api_f = api.strip(' \r
\t')
api_c = api_f.split('=')
if api_name == api_c[0]:
return api_c[1]
# excel
def get_case(filename,sheetnum):
case_dir='D:\\person\\learn\\py\\HDapi\\testcase_excel' + '\\' + filename + '.xlsx'
datas = xlrd.open_workbook(case_dir)
table = datas.sheets()[sheetnum]
nor = table.nrows
nol = table.ncols
return nor,table
# xlwt excel
def write_report():
workbook = xlwt.Workbook(encoding='utf-8')
# excel housemanage
worksheet = workbook.add_sheet('housemanage')
#
alignment = xlwt.Alignment()
alignment.horz = alignment.HORZ_CENTER
alignment.vert = alignment.VERT_CENTER
style = xlwt.XFStyle()
style.alignment = alignment
#
worksheet.write_merge(0,0,0,7,' (housemanage)',style)
worksheet.write_merge(1,10,0,0,'house_manage',style)
worksheet.write_merge(1,2,1,1,'insethouse',style)
worksheet.write_merge(3,4,1,1,'updatehouse',style)
worksheet.write_merge(5,6,1,1,'deletehouse',style)
worksheet.write_merge(7,8,1,1,'gethouse',style)
worksheet.write_merge(9,10,1,1,'updatehouse',style)
worksheet.write_merge(1,2,11,11,'total_result',style)
worksheet.write(1,2,'notes')
worksheet.write(2,2,'detail')
worksheet.write(3,2,'notes')
worksheet.write(4,2,'detail')
worksheet.write(5,2,'notes')
worksheet.write(6,2,'detail')
worksheet.write(7,2,'notes')
worksheet.write(8,2,'detail')
worksheet.write(9,2,'notes')
worksheet.write(10,2,'detail')
worksheet.write(1,12,'pass')
worksheet.write(1,13,'faild')
# worksheet,workbook ,
return worksheet,workbook
四.試験用例の作成test_inserthouse.py
import requests,unittest,os,time,json
from common import public,get_authorization
# , public wirte_sheet wooksheet,
def test_inserthouses(worksheet,workbook):
url = public.get_url('inserthouse')
nor,table = public.get_case('house',0)
Authorization = get_authorization.get_Authorization()
a = 2
xu = 0
yu = 0
# for excel
for i in range(1,nor):
# excel
houseNum = table.cell_value(i,0)
orgUuid = table.cell_value(i,1)
floor = table.cell_value(i,2)
houseUseFor = table.cell_value(i,3)
residentNum = table.cell_value(i,4)
emergencyPhone = table.cell_value(i,5)
expect_code = table.cell_value(i,6)
expect_message = table.cell_value(i,7)
notes = table.cell_value(i,8)
payment = table.cell_value(i,11)
# body
data = {
'houseNum':houseNum,
'houseUseFor':houseUseFor,
'orgUuid':orgUuid,
'residentNum':residentNum,
'floor':floor,
'emergencyPhone':emergencyPhone,
'payment':payment
}
# , Authorization
headers={
'Accept':'application/json',
'Content-Type':'application/json',
'Authorization':Authorization
}
a+=1
worksheet.write(1,a,notes)
data = json.dumps(data)
r = requests.post(url,data=data,headers=headers)
#
b = eval(r.text)
m = b.get('code')
n = b.get('message')
k = b.get('data')
#
if m==expect_code and n==expect_message:
worksheet.write(2,a,'pass')
xu += 1
else:
worksheet.write(2,a,'faild:%s'%k)
yu += 1
# ,
return xu,yu
test_udatehouse.py
import requests,unittest,os,time,json
from common import public,get_authorization
#
def test_updatehouses(worksheet,workbook):
nor,table = public.get_case('house',4)
Authorization = get_authorization.get_Authorization()
url = public.get_url('updatehouse')
a = 2
x = 0
y = 0
for i in range(1,nor):
houseNum = table.cell_value(i,0)
orgUuid = table.cell_value(i,1)
uuid = table.cell_value(i,2)
houseUseFor = table.cell_value(i,3)
residentNum = table.cell_value(i,4)
emergencyPhone = table.cell_value(i,5)
expect_code = table.cell_value(i,6)
expect_message = table.cell_value(i,7)
notes = table.cell_value(i,8)
floor = table.cell_value(i,9)
payment = table.cell_value(i,11)
data = {
'houseNum':houseNum,
'houseUseFor':houseUseFor,
'orgUuid':orgUuid,
'floor':floor,
'residentNum':residentNum,
'uuid':uuid,
'emergencyPhone':emergencyPhone,
'payment':payment
}
headers={
'Accept':'application/json',
'Content-Type':'application/json',
'Authorization':Authorization
}
a+=1
worksheet.write(3,a,notes)
data = json.dumps(data)
r = requests.post(url,data=data,headers=headers)
b = eval(r.text)
m = b.get('code')
n = b.get('message')
k = b.get('data')
if m==expect_code and n==expect_message:
worksheet.write(4,a,'pass')
x += 1
else:
worksheet.write(4,a,'faild:%s'%k)
y += 1
return x,y
五.公的関数、テストケースの設計を連携して考えることによって、実行ファイルの中で何をするべきか、何を実現するか。本来は、実行ファイルをHDapi-aut-testのルートファイルの下に個別に置きたいのですが、テストを通過した数と不合格の数をテストレポートに書き込むと、必ず公的関数を呼び出す方法が必要です。ルートフォルダの下に置いてあるので、公共関数とは隔たっています。だから、実行ファイルをテスト用のフォルダに置かなければなりません。ファイル名はやはり分かりやすくて、探しやすいです。また、メールを自動で送る機能も加えたいです。ここでは書きません。実はメールを送るのは簡単です。いくつかの例を探してもいいです。ps:コードはlowです。パッケージもなく、直接暴力で簡単に実行します。コードは以下の通りです
from common import public
import test_inserthouse,test_updatehouse
import time
from pychartdir import *
# excel
worksheet,workbook = public.write_report()
# , x: ,y:
xu,yu = test_inserthouse.test_inserthouses(worksheet,workbook)
x,y = test_updatehouse.test_updatehouses(worksheet,workbook)
#
xr = x+xu
yr = y+yu
# excel
worksheet.write(2,12,xr)
worksheet.write(2,13,yr)
#
now = time.strftime('%Y-%m-%d %H_%M_%S')
#
report_dir = 'D:\\person\\learn\\py\\HDapi\\report\\'
#
filename =report_dir + now + 'apiresult.xlsx'
workbook.save(filename)
# pychart , ---- pychart
data = [yr, xr]
labels = ["faild", "pass"]
c = PieChart(280, 240)
c.setPieSize(140, 130, 80)
c.addTitle("api_result")
c.set3D()
c.setData(data, labels)
c.setExplode(0)
c.makeChart(report_dir+now+"apiresult.png")
六.試験報告書を提出して出力するもともと生成した写真をエクセルテストレポートに入れたいですが、能力が限られていて、画像を入れられませんでした。知能は単独で一つのpngファイルに保存しました。
グラフの概要:
excelテスト報告状況:
ここで、pythonインタフェースの自動化の枠組みについての文章を紹介します。これまでの文章を検索したり、下記の関連記事を見たりしてください。これからもよろしくお願いします。