私が持っているrootFile = root.json
コンテンツがあるファイルを
{
"tests":[
{
"test":"test1",
"url":"url1"
},
{
"test":"test2",
"url":"url2"
},
{
"test":"test3",
"url":"url3"
}
]
}
そして私は実行する文字列パラメータを与えているPython関数を持っています
def check(params):
runId=time.strftime("%Y%m%d-%H%M%S")
outputFile=Path(""+runId+".txt")
with open (rootFile) as rj:
data=json.load(rj)
for param in params:
for t in data['tests']:
if t['test'] == param:
urlToUse=t['url']
testrun(param, urlToUse, runId)
else:
nonExistingTest="Test "+param+" Doesn't exist \n"
if not outputFile.exists():
with open(outputFile,"a") as noSuchTest:
noSuchTest.write("Test "+param+" Doesn't exist \n")
elif not nonExistingTest in open(outputFile).read():
with open(outputFile,"a") as noSuchTest:
noSuchTest.write("Test "+param+" Doesn't exist \n")
with open(outputFile,"r") as pf:
message=pf.read()
slackResponse(message)
私のパラメータがroot.jsonファイルに存在する「test1test2test3」の場合、そのような応答があります
Test test1 passed #this response comes from testrun() function
Test test1 Doesn't exist
Test test2 Doesn't exist
Test test2 passed #this response comes from testrun() function
Test test3 Doesn't exist
Test test3 passed #this response comes from testrun() function
しかし、存在しないパラメータを指定すると、出力は正しくなります。例えば
Test test4 Doesn't exist
Test test5 Doesn't exist
Test test6 Doesn't exist
Test test7 Doesn't exist
実際に存在するのに、なぜ送信が存在しないのか理解できません
関数呼び出しで渡された各パラメーターtests
を、jsonファイルからロードされた配列のすべての項目と比較し、同等性について対応するテストを開始し、そのようなテストは他の方法では存在しないことを示すメッセージをエコーします。この比較では、パラメーターごとに1回だけ肯定的な結果が得られますがroot.json
、各パラメーターに指定されたテストがある回数だけチェックされるため、特定のパラメーターが一致しないことを示す行が出力に多数表示されます。で指定された特定のテストroot.json
。
root.json
現在のパラメータでアドレス指定されているエントリを見つけたら、ループを終了する方法が必要になります。私はに割り当てられたデータ構造の変更のいずれかをお勧めしたいtests
でroot.json
値としてキーとそのURLなどのテスト名で、オブジェクトへの配列から、または何らかの形であなたが現在のパラメータを比較している可能性テストのリストをフィルタリングします。
内部のすべてをfor param in params:
次のように変更することを検討してください。
matching_tests = [t for t in data['tests'] if t['test'] == param]
if len(matching_tests) > 0:
for t in matching_tests:
urlToUse=t['url']
testrun(param, urlToUse, runId)
else:
nonExistingTest="Test "+param+" Doesn't exist \n"
[...]
そうすれば、特定のパラメーターに一致するテストがないというメッセージは、最大で1回だけエコーされます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加