mirror of
https://github.com/httprunner/httprunner.git
synced 2026-05-12 02:21:29 +08:00
154 lines
5.2 KiB
Python
154 lines
5.2 KiB
Python
import os
|
|
import unittest
|
|
|
|
from httprunner import exceptions
|
|
from httprunner.loader import load
|
|
from httprunner.loader.buildup import load_test_file
|
|
|
|
|
|
class TestFileLoader(unittest.TestCase):
|
|
|
|
def test_load_yaml_file_file_format_error(self):
|
|
yaml_tmp_file = "tests/data/tmp.yml"
|
|
# create empty yaml file
|
|
with open(yaml_tmp_file, 'w') as f:
|
|
f.write("")
|
|
|
|
with self.assertRaises(exceptions.FileFormatError):
|
|
load_test_file(yaml_tmp_file)
|
|
|
|
os.remove(yaml_tmp_file)
|
|
|
|
# create invalid format yaml file
|
|
with open(yaml_tmp_file, 'w') as f:
|
|
f.write("abc")
|
|
|
|
with self.assertRaises(exceptions.FileFormatError):
|
|
load_test_file(yaml_tmp_file)
|
|
|
|
os.remove(yaml_tmp_file)
|
|
|
|
def test_load_json_file_file_format_error(self):
|
|
json_tmp_file = "tests/data/tmp.json"
|
|
# create empty file
|
|
with open(json_tmp_file, 'w') as f:
|
|
f.write("")
|
|
|
|
with self.assertRaises(exceptions.FileFormatError):
|
|
load_test_file(json_tmp_file)
|
|
|
|
os.remove(json_tmp_file)
|
|
|
|
# create empty json file
|
|
with open(json_tmp_file, 'w') as f:
|
|
f.write("{}")
|
|
|
|
with self.assertRaises(exceptions.FileFormatError):
|
|
load_test_file(json_tmp_file)
|
|
|
|
os.remove(json_tmp_file)
|
|
|
|
# create invalid format json file
|
|
with open(json_tmp_file, 'w') as f:
|
|
f.write("abc")
|
|
|
|
with self.assertRaises(exceptions.FileFormatError):
|
|
load_test_file(json_tmp_file)
|
|
|
|
os.remove(json_tmp_file)
|
|
|
|
def test_load_testcases_bad_filepath(self):
|
|
testcase_file_path = os.path.join(os.getcwd(), 'tests/data/demo')
|
|
with self.assertRaises(exceptions.FileNotFound):
|
|
load.load_file(testcase_file_path)
|
|
|
|
def test_load_json_testcases(self):
|
|
testcase_file_path = os.path.join(
|
|
os.getcwd(), 'tests/data/demo_testcase_hardcode.json')
|
|
testcases = load.load_file(testcase_file_path)
|
|
self.assertEqual(len(testcases), 3)
|
|
test = testcases[0]["test"]
|
|
self.assertIn('name', test)
|
|
self.assertIn('request', test)
|
|
self.assertIn('url', test['request'])
|
|
self.assertIn('method', test['request'])
|
|
|
|
def test_load_yaml_testcases(self):
|
|
testcase_file_path = os.path.join(
|
|
os.getcwd(), 'tests/data/demo_testcase_hardcode.yml')
|
|
testcases = load.load_file(testcase_file_path)
|
|
self.assertEqual(len(testcases), 3)
|
|
test = testcases[0]["test"]
|
|
self.assertIn('name', test)
|
|
self.assertIn('request', test)
|
|
self.assertIn('url', test['request'])
|
|
self.assertIn('method', test['request'])
|
|
|
|
def test_load_csv_file_one_parameter(self):
|
|
csv_file_path = os.path.join(
|
|
os.getcwd(), 'tests/data/user_agent.csv')
|
|
csv_content = load.load_file(csv_file_path)
|
|
self.assertEqual(
|
|
csv_content,
|
|
[
|
|
{'user_agent': 'iOS/10.1'},
|
|
{'user_agent': 'iOS/10.2'},
|
|
{'user_agent': 'iOS/10.3'}
|
|
]
|
|
)
|
|
|
|
def test_load_csv_file_multiple_parameters(self):
|
|
csv_file_path = os.path.join(
|
|
os.getcwd(), 'tests/data/account.csv')
|
|
csv_content = load.load_file(csv_file_path)
|
|
self.assertEqual(
|
|
csv_content,
|
|
[
|
|
{'username': 'test1', 'password': '111111'},
|
|
{'username': 'test2', 'password': '222222'},
|
|
{'username': 'test3', 'password': '333333'}
|
|
]
|
|
)
|
|
|
|
def test_load_folder_files(self):
|
|
folder = os.path.join(os.getcwd(), 'tests')
|
|
file1 = os.path.join(os.getcwd(), 'tests', 'test_utils.py')
|
|
file2 = os.path.join(os.getcwd(), 'tests', 'api', 'reset_all.yml')
|
|
|
|
files = load.load_folder_files(folder, recursive=False)
|
|
self.assertEqual(files, [])
|
|
|
|
files = load.load_folder_files(folder)
|
|
self.assertIn(file2, files)
|
|
self.assertNotIn(file1, files)
|
|
|
|
files = load.load_folder_files("not_existed_foulder", recursive=False)
|
|
self.assertEqual([], files)
|
|
|
|
files = load.load_folder_files(file2, recursive=False)
|
|
self.assertEqual([], files)
|
|
|
|
def test_load_dot_env_file(self):
|
|
dot_env_path = os.path.join(
|
|
os.getcwd(), "tests", ".env"
|
|
)
|
|
env_variables_mapping = load.load_dot_env_file(dot_env_path)
|
|
self.assertIn("PROJECT_KEY", env_variables_mapping)
|
|
self.assertEqual(env_variables_mapping["UserName"], "debugtalk")
|
|
|
|
def test_load_custom_dot_env_file(self):
|
|
dot_env_path = os.path.join(
|
|
os.getcwd(), "tests", "data", "test.env"
|
|
)
|
|
env_variables_mapping = load.load_dot_env_file(dot_env_path)
|
|
self.assertIn("PROJECT_KEY", env_variables_mapping)
|
|
self.assertEqual(env_variables_mapping["UserName"], "test")
|
|
self.assertEqual(env_variables_mapping["content_type"], "application/json; charset=UTF-8")
|
|
|
|
def test_load_env_path_not_exist(self):
|
|
dot_env_path = os.path.join(
|
|
os.getcwd(), "tests", "data",
|
|
)
|
|
env_variables_mapping = load.load_dot_env_file(dot_env_path)
|
|
self.assertEqual(env_variables_mapping, {})
|