fix #707: duration stat error in multiple testsuites

Thanks @lijuelijue and @plmmilove
This commit is contained in:
debugtalk
2019-10-26 22:27:04 +08:00
parent d08d2d3c44
commit 3ac6e47bda
2 changed files with 18 additions and 8 deletions

View File

@@ -15,6 +15,10 @@
- log httprunner version before running tests
- remove unused import & code
**Fixed**
- fix #707: duration stat error in multiple testsuites
## 2.2.6 (2019-09-18)
**Added**

View File

@@ -54,11 +54,11 @@ def get_summary(result):
}
}
summary["stat"]["successes"] = summary["stat"]["total"] \
- summary["stat"]["failures"] \
- summary["stat"]["errors"] \
- summary["stat"]["skipped"] \
- summary["stat"]["expectedFailures"] \
- summary["stat"]["unexpectedSuccesses"]
- summary["stat"]["failures"] \
- summary["stat"]["errors"] \
- summary["stat"]["skipped"] \
- summary["stat"]["expectedFailures"] \
- summary["stat"]["unexpectedSuccesses"]
summary["time"] = {
'start_at': result.start_at,
@@ -80,10 +80,16 @@ def aggregate_stat(origin_stat, new_stat):
for key in new_stat:
if key not in origin_stat:
origin_stat[key] = new_stat[key]
elif key == "duration":
# duration = max_end_time - min_start_time
max_end_time = max(origin_stat["start_at"] + origin_stat["duration"],
new_stat["start_at"] + new_stat["duration"])
min_start_time = min(origin_stat["start_at"], new_stat["start_at"])
origin_stat["duration"] = max_end_time - min_start_time
elif key == "start_at":
# start datetime , duration=current_time - min(stat_at)
origin_stat[key] = min(origin_stat[key], new_stat[key])
origin_stat["duration"] = time.time() - origin_stat[key]
# start datetime
origin_stat["start_at"] = min(origin_stat["start_at"], new_stat["start_at"])
else:
origin_stat[key] += new_stat[key]