diff --git a/python_module/requires-test.txt b/python_module/requires-test.txt index 0bd28419dd9913c36a869d5de9f9278b28a8363a..9e7326840dde8270082d7094f32d401f2b6ab1fa 100644 --- a/python_module/requires-test.txt +++ b/python_module/requires-test.txt @@ -1,2 +1,3 @@ pytest==5.3.0 -pytest-sphinx==0.2.2 +pytest-sphinx>=0.2.2 +pytest-json-report>=1.2.1 diff --git a/python_module/setup.py b/python_module/setup.py index f590322b262b0930ad8be87236f7a199b6644098..7ae36070b003b20c709f2f368cea0b616ea6eb3e 100644 --- a/python_module/setup.py +++ b/python_module/setup.py @@ -76,7 +76,7 @@ setup_kwargs = dict( ext_modules=[PrecompiledExtesion('megengine._internal._mgb')], install_requires=requires, extras_require={ - 'dev': [*requires_style, *requires_test], + 'dev': requires_style + requires_test, 'ci': requires_test, }, cmdclass={'build_ext': build_ext}, diff --git a/python_module/test/conftest.py b/python_module/test/conftest.py index 63da13303dea2ea6565bc87a3fc9c2bf583dd3c0..cf1a535918dcc8549027ca6b09f1c037d54b05e8 100644 --- a/python_module/test/conftest.py +++ b/python_module/test/conftest.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # MegEngine is Licensed under the Apache License, Version 2.0 (the "License") # # Copyright (c) 2014-2020 Megvii Inc. All rights reserved. @@ -10,3 +9,26 @@ import os import sys sys.path.append(os.path.join(os.path.dirname(__file__))) + + +def pytest_json_modifyreport(json_report): + events = [] + timestamp = 0 + for item in json_report["tests"]: + for stage in ["setup", "call", "teardown"]: + if stage in item: + events.append( + { + "name": item["nodeid"], + "ph": "X", + "ts": timestamp, + "dur": item[stage]["duration"] * 1e6, + "cat": stage, + "pid": stage, + "tid": item["nodeid"], + } + ) + timestamp += events[-1]["dur"] + json_report["traceEvents"] = events + del json_report["collectors"] + del json_report["tests"] diff --git a/python_module/test/run.sh b/python_module/test/run.sh index 08d0abbff1dc4b3717ce0820ca71c4d4e1fab051..4d821340471966a931b1b3345fb33e3b07badec3 100755 --- a/python_module/test/run.sh +++ b/python_module/test/run.sh @@ -2,6 +2,7 @@ pushd $(dirname "${BASH_SOURCE[0]}")/.. >/dev/null pytest -xv -m 'not internet' \ + --json-report --json-report-file=time_python_test.json \ --ignore test/unit/module/test_pytorch.py \ --ignore test/pytorch_comparison \ --ignore test/unit/hub/test_hub.py \