diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md
index d108e537..50cba792 100644
--- a/docs/CHANGELOG.md
+++ b/docs/CHANGELOG.md
@@ -14,7 +14,7 @@
**python version**
- feat: support skip for pytest
-- feat: print request and response details when running API cases
+- feat: print request and response details in DEBUG level when running API cases
- fix: support None/dict/list format when printing sql response
## v4.1.3 (2022-06-14)
diff --git a/httprunner/cli.py b/httprunner/cli.py
index b26dc5be..49a6f5f4 100644
--- a/httprunner/cli.py
+++ b/httprunner/cli.py
@@ -56,8 +56,6 @@ def main_run(extra_args) -> enum.IntEnum:
def main():
"""API test: parse command line options and run commands."""
- init_logger()
-
parser = argparse.ArgumentParser(description=__description__)
parser.add_argument(
"-V", "--version", dest="version", action="store_true", help="show version"
@@ -103,6 +101,19 @@ def main():
print(f"{__version__}")
sys.exit(0)
+ # set log level
+ try:
+ index = extra_args.index("--log-level")
+ if index < len(extra_args) - 1:
+ level = extra_args[index + 1]
+ else:
+ # not specify log level value
+ level = "INFO" # default
+ except ValueError:
+ level = "INFO" # default
+
+ init_logger(level)
+
if sys.argv[1] == "run":
sys.exit(main_run(extra_args))
elif sys.argv[1] == "make":
diff --git a/httprunner/runner.py b/httprunner/runner.py
index 76c9b655..815d8112 100644
--- a/httprunner/runner.py
+++ b/httprunner/runner.py
@@ -27,7 +27,7 @@ from httprunner.models import (
VariablesMapping,
)
from httprunner.parser import Parser
-from httprunner.utils import LOGGER_FORMAT, init_logger, merge_variables
+from httprunner.utils import LOGGER_FORMAT, merge_variables
class SessionRunner(object):
@@ -54,7 +54,6 @@ class SessionRunner(object):
__log_path: Text = ""
def __init(self):
- init_logger()
self.__config = self.config.struct()
self.__session_variables = self.__session_variables or {}
self.__start_at = 0
diff --git a/httprunner/step_request.py b/httprunner/step_request.py
index 3fb4fd94..4a3cee59 100644
--- a/httprunner/step_request.py
+++ b/httprunner/step_request.py
@@ -118,7 +118,7 @@ def run_step_request(runner: HttpRunner, step: TStep) -> StepResult:
for k, v in parsed_request_dict.items():
request_print += f"{k}: {pretty_format(v)}\n"
- logger.info(request_print)
+ logger.debug(request_print)
if ALLURE is not None:
ALLURE.attach(
request_print,
@@ -138,7 +138,7 @@ def run_step_request(runner: HttpRunner, step: TStep) -> StepResult:
resp_body = resp.content
response_print += f"body: {pretty_format(resp_body)}\n"
- logger.info(response_print)
+ logger.debug(response_print)
if ALLURE is not None:
ALLURE.attach(
response_print,
diff --git a/httprunner/utils.py b/httprunner/utils.py
index 3a42f3b3..b95d3ecb 100644
--- a/httprunner/utils.py
+++ b/httprunner/utils.py
@@ -323,7 +323,11 @@ def gen_cartesian_product(*args: List[Dict]) -> List[Dict]:
LOGGER_FORMAT = "{time:YYYY-MM-DD HH:mm:ss.SSS} | {level} | {message}"
-def init_logger():
+def init_logger(level: str):
+ level = level.upper()
+ if level not in ["TRACE", "DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"]:
+ level = "INFO" # default
+
# set log level to INFO
logger.remove()
- logger.add(sys.stderr, format=LOGGER_FORMAT, level="INFO")
+ logger.add(sys.stdout, format=LOGGER_FORMAT, level=level)