Merge pull request #664 from httprunner/fix_exit_code

2.2.5
This commit is contained in:
debugtalk
2019-07-28 17:27:04 +08:00
committed by GitHub
7 changed files with 39 additions and 17 deletions
+2
View File
@@ -13,6 +13,8 @@ install:
- pip install poetry - pip install poetry
- poetry install -vvv - poetry install -vvv
script: script:
- python -m httprunner.cli hrun -V
- python -m httprunner.cli hrun -h
- poetry build - poetry build
- poetry run coverage run --source=httprunner -m unittest discover - poetry run coverage run --source=httprunner -m unittest discover
after_success: after_success:
+12 -1
View File
@@ -1,6 +1,17 @@
# Release History # Release History
## 2.2.4 (2019-07-13) ## 2.2.5 (2019-07-28)
**Added**
- log HttpRunner version when initializing
**Fixed**
- fix #658: sys.exit 1 if any testcase failed
- fix ModuleNotFoundError in debugging mode if httprunner uninstalled
## 2.2.4 (2019-07-18)
**Changed** **Changed**
+1 -1
View File
@@ -1,4 +1,4 @@
__version__ = "2.2.4" __version__ = "2.2.5"
__description__ = "One-stop solution for HTTP(S) testing." __description__ = "One-stop solution for HTTP(S) testing."
__all__ = ["__version__", "__description__"] __all__ = ["__version__", "__description__"]
+5 -4
View File
@@ -3,8 +3,8 @@
import os import os
import unittest import unittest
from httprunner import (exceptions, loader, logger, parser, report, runner, from httprunner import (__version__, exceptions, loader, logger, parser,
utils, validator) report, runner, utils, validator)
class HttpRunner(object): class HttpRunner(object):
@@ -22,6 +22,9 @@ class HttpRunner(object):
log_file (str): log file path. log_file (str): log file path.
""" """
logger.setup_logger(log_level, log_file)
logger.log_info("HttpRunner version: {}".format(__version__))
self.exception_stage = "initialize HttpRunner()" self.exception_stage = "initialize HttpRunner()"
kwargs = { kwargs = {
"failfast": failfast, "failfast": failfast,
@@ -33,8 +36,6 @@ class HttpRunner(object):
self.report_template = report_template self.report_template = report_template
self.report_dir = report_dir self.report_dir = report_dir
self._summary = None self._summary = None
if log_file:
logger.setup_logger(log_level, log_file)
def _add_tests(self, testcases): def _add_tests(self, testcases):
""" initialize testcase with Runner() and add to test suite. """ initialize testcase with Runner() and add to test suite.
+17 -9
View File
@@ -3,8 +3,9 @@
def main_hrun(): def main_hrun():
""" API test: parse command line options and run commands. """ API test: parse command line options and run commands.
""" """
import sys
import argparse import argparse
from httprunner import logger from httprunner.logger import color_print
from httprunner import __description__, __version__ from httprunner import __description__, __version__
from httprunner.api import HttpRunner from httprunner.api import HttpRunner
from httprunner.compat import is_py2 from httprunner.compat import is_py2
@@ -51,13 +52,12 @@ def main_hrun():
help="Prettify JSON testcase format.") help="Prettify JSON testcase format.")
args = parser.parse_args() args = parser.parse_args()
logger.setup_logger(args.log_level, args.log_file)
if is_py2: if is_py2:
logger.log_warning(get_python2_retire_msg()) color_print(get_python2_retire_msg(), "YELLOW")
if args.version: if args.version:
logger.color_print("{}".format(__version__), "GREEN") color_print("{}".format(__version__), "GREEN")
exit(0) exit(0)
if args.validate: if args.validate:
@@ -76,16 +76,21 @@ def main_hrun():
failfast=args.failfast, failfast=args.failfast,
save_tests=args.save_tests, save_tests=args.save_tests,
report_template=args.report_template, report_template=args.report_template,
report_dir=args.report_dir report_dir=args.report_dir,
log_level=args.log_level,
log_file=args.log_file
) )
try: try:
for path in args.testcase_paths: for path in args.testcase_paths:
runner.run(path, dot_env_path=args.dot_env_path) runner.run(path, dot_env_path=args.dot_env_path)
except Exception: except Exception:
logger.log_error("!!!!!!!!!! exception stage: {} !!!!!!!!!!".format(runner.exception_stage)) color_print("!!!!!!!!!! exception stage: {} !!!!!!!!!!".format(runner.exception_stage), "YELLOW")
raise raise
return 0 if runner.summary and runner.summary["success"]:
sys.exit(0)
else:
sys.exit(1)
def main_locust(): def main_locust():
@@ -182,9 +187,12 @@ if __name__ == "__main__":
""" debugging mode """ debugging mode
""" """
import sys import sys
import os
if len(sys.argv) == 0: if len(sys.argv) == 0:
exit(0) exit(0)
sys.path.insert(0, os.getcwd())
cmd = sys.argv.pop(1) cmd = sys.argv.pop(1)
if cmd in ["hrun", "httprunner", "ate"]: if cmd in ["hrun", "httprunner", "ate"]:
@@ -196,7 +204,7 @@ if __name__ == "__main__":
color_print("Miss debugging type.", "RED") color_print("Miss debugging type.", "RED")
example = "\n".join([ example = "\n".join([
"e.g.", "e.g.",
"python main-debug.py hrun /path/to/testcase_file", "python -m httprunner.cli hrun /path/to/testcase_file",
"python main-debug.py locusts -f /path/to/testcase_file" "python -m httprunner.cli locusts -f /path/to/testcase_file"
]) ])
color_print(example, "yellow") color_print(example, "yellow")
+1 -1
View File
@@ -19,7 +19,7 @@ logger = logging.getLogger("httprunner")
def setup_logger(log_level, log_file=None): def setup_logger(log_level, log_file=None):
"""setup root logger with ColoredFormatter.""" """setup logger with ColoredFormatter."""
level = getattr(logging, log_level.upper(), None) level = getattr(logging, log_level.upper(), None)
if not level: if not level:
color_print("Invalid log level: %s" % log_level, "RED") color_print("Invalid log level: %s" % log_level, "RED")
+1 -1
View File
@@ -1,6 +1,6 @@
[tool.poetry] [tool.poetry]
name = "httprunner" name = "httprunner"
version = "2.2.4" version = "2.2.5"
description = "One-stop solution for HTTP(S) testing." description = "One-stop solution for HTTP(S) testing."
license = "Apache-2.0" license = "Apache-2.0"
readme = "README.md" readme = "README.md"