fix: compatibility with different path separators of Linux and Windows

This commit is contained in:
debugtalk
2020-06-14 22:01:09 +08:00
parent a05d590f73
commit f4aa0b9913
4 changed files with 33 additions and 1 deletions

View File

@@ -348,3 +348,15 @@ def session_fixture(request):
f.write(conftest_content)
logger.info("generated conftest.py to generate summary.json")
def ensure_path_sep(path: Text) -> Text:
""" ensure compatibility with different path separators of Linux and Windows
"""
if "/" in path:
path = os.sep.join(path.split("/"))
if "\\" in path:
path = os.sep.join(path.split("\\"))
return path

View File

@@ -14,6 +14,7 @@ import sys
from loguru import logger
from sentry_sdk import capture_message
from httprunner.compat import ensure_path_sep
from httprunner.ext.har2case.core import HarParser
@@ -59,6 +60,7 @@ def main_har2case(args):
logger.error("HAR file not specified.")
sys.exit(1)
har_source_file = ensure_path_sep(har_source_file)
if not os.path.isfile(har_source_file):
logger.error(f"HAR file not exists: {har_source_file}")
sys.exit(1)

View File

@@ -13,6 +13,7 @@ from httprunner.compat import (
ensure_testcase_v3_api,
ensure_testcase_v3,
convert_variables,
ensure_path_sep,
)
from httprunner.loader import (
load_folder_files,
@@ -498,6 +499,7 @@ def main_make(tests_paths: List[Text]) -> List[Text]:
return []
for tests_path in tests_paths:
tests_path = ensure_path_sep(tests_path)
if not os.path.isabs(tests_path):
tests_path = os.path.join(os.getcwd(), tests_path)

View File

@@ -2,7 +2,7 @@ import os
import unittest
from httprunner import compat, exceptions, loader
from httprunner.compat import convert_variables
from httprunner.compat import convert_variables, ensure_path_sep
class TestCompat(unittest.TestCase):
@@ -213,3 +213,19 @@ class TestCompat(unittest.TestCase):
"--self-contained-html",
],
)
def test_ensure_file_path(self):
self.assertEqual(
ensure_path_sep("demo\\test.yml"), os.sep.join(["demo", "test.yml"])
)
self.assertEqual(
ensure_path_sep(os.path.join(os.getcwd(), "demo\\test.yml")),
os.path.join(os.getcwd(), os.sep.join(["demo", "test.yml"])),
)
self.assertEqual(
ensure_path_sep("demo/test.yml"), os.sep.join(["demo", "test.yml"])
)
self.assertEqual(
ensure_path_sep(os.path.join(os.getcwd(), "demo/test.yml")),
os.path.join(os.getcwd(), os.sep.join(["demo", "test.yml"])),
)