打印详细的堆栈跟踪以解析json

时间:2019-12-06 12:34:50

标签: python pytest

我从json中打开了一组数据,并将其与csv中的另一组数据进行了比较。

assert data1_json1 == data1_csv1
assert data2_json1 == data2_csv2
assert data3_json1 == data3_csv3
assert data4_json1 == data4_csv4
.......
assert data1_json2 == data1_csv10
assert data2_json2 == data2_csv11
assert data3_json2 == data3_csv12
assert data4_json2 == data4_csv13
.......

在我需要详细答复之前,它一直很好。我可以对一组数据使用try except,但是我不知道如何在没有代码重复的情况下将其用于所有断言。

try:
   assert data1_json == data1_csv
except AssertionError:
   raise AssertionError('Json: ' + data1_json, 'CSV: ' + data1_csv)

1 个答案:

答案 0 :(得分:0)

您可以将消息与assert一起发送。 例如,

try:
    assert data1_json == data1_csv, "Json: "+data1_json+" CSV: "+data1_csv
    assert data2_json == data2_csv, "Json: "+data2_json+" CSV: "+data2_csv
    ...
except AssertionError as e:
    print(e)

该e将显示“ Json:“ + data1_json +” CSV:“ + data1_csv

在更简单的模式下,将值传递到元组并在AssertionError模式下检索

try:
    assert data1_json == data1_csv, (data1_json,data1_csv)
    assert data2_json == data2_csv, (data2_json,data2_csv)
    ...
except AssertionError as e:
    output = list(e[0])
    print("Json: "+output[0]+" CSV: "+output[1])