mirror of
https://github.com/httprunner/httprunner.git
synced 2026-05-11 18:11:21 +08:00
utils: testcases loader
This commit is contained in:
0
ate/__init__.py
Normal file
0
ate/__init__.py
Normal file
16
ate/exception.py
Normal file
16
ate/exception.py
Normal file
@@ -0,0 +1,16 @@
|
||||
#coding: utf-8
|
||||
from termcolor import colored
|
||||
|
||||
class MyBaseError(BaseException):
|
||||
def __init__(self, msg):
|
||||
self.msg = msg
|
||||
self.color_msg = colored(msg, 'red', attrs=['bold'])
|
||||
|
||||
def __repr__(self):
|
||||
return self.msg
|
||||
|
||||
def __str__(self):
|
||||
return self.color_msg
|
||||
|
||||
class ParamsError(MyBaseError):
|
||||
pass
|
||||
22
ate/utils.py
Normal file
22
ate/utils.py
Normal file
@@ -0,0 +1,22 @@
|
||||
import json
|
||||
import yaml
|
||||
import os.path
|
||||
from ate.exception import ParamsError
|
||||
|
||||
def load_yaml_file(yaml_file):
|
||||
with open(yaml_file, 'r+') as stream:
|
||||
return yaml.load(stream)
|
||||
|
||||
def load_json_file(json_file):
|
||||
with open(json_file) as data_file:
|
||||
return json.load(data_file)
|
||||
|
||||
def load_testcases(testcase_file_path):
|
||||
file_suffix = os.path.splitext(testcase_file_path)[1]
|
||||
if file_suffix == '.json':
|
||||
return load_json_file(testcase_file_path)
|
||||
elif file_suffix in ['.yaml', '.yml']:
|
||||
return load_yaml_file(testcase_file_path)
|
||||
else:
|
||||
# '' or other suffix
|
||||
raise ParamsError("Bad testcase file name!")
|
||||
43
test/data/demo.json
Normal file
43
test/data/demo.json
Normal file
@@ -0,0 +1,43 @@
|
||||
[
|
||||
{
|
||||
"name": "create user which does not exist",
|
||||
"request": {
|
||||
"url": "http://127.0.0.1:5000/api/users/1000",
|
||||
"method": "POST",
|
||||
"headers": {
|
||||
"content-type": "application/json"
|
||||
},
|
||||
"cookies": {},
|
||||
"json": {
|
||||
"name": "user1",
|
||||
"password": "123456"
|
||||
}
|
||||
},
|
||||
"response": {
|
||||
"status_code": 201,
|
||||
"headers": {
|
||||
"Content-Type": "application/json"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "create user which existed",
|
||||
"request": {
|
||||
"url": "http://127.0.0.1:5000/api/users/1000",
|
||||
"method": "POST",
|
||||
"headers": {
|
||||
"content-type": "application/json"
|
||||
},
|
||||
"json": {
|
||||
"name": "user1",
|
||||
"password": "123456"
|
||||
}
|
||||
},
|
||||
"response": {
|
||||
"status_code": 500,
|
||||
"headers": {
|
||||
"Content-Type": "application/json"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
29
test/data/demo.yml
Normal file
29
test/data/demo.yml
Normal file
@@ -0,0 +1,29 @@
|
||||
-
|
||||
name: create user which does not exist
|
||||
request:
|
||||
url: http://127.0.0.1:5000/api/users/1000
|
||||
method: POST
|
||||
headers:
|
||||
Content-Type: application/json
|
||||
json:
|
||||
name: user1
|
||||
password: 123456
|
||||
response:
|
||||
status_code: 201
|
||||
headers:
|
||||
Content-Type: application/json
|
||||
|
||||
-
|
||||
name: create user which existed
|
||||
request:
|
||||
url: http://127.0.0.1:5000/api/users/1000
|
||||
method: POST
|
||||
headers:
|
||||
Content-Type: application/json
|
||||
json:
|
||||
name: user1
|
||||
password: 123456
|
||||
response:
|
||||
status_code: 500
|
||||
headers:
|
||||
Content-Type: application/json
|
||||
31
test/test_utils.py
Normal file
31
test/test_utils.py
Normal file
@@ -0,0 +1,31 @@
|
||||
import os
|
||||
import unittest
|
||||
from ate import utils
|
||||
from ate import exception
|
||||
|
||||
class TestUtils(unittest.TestCase):
|
||||
|
||||
def test_load_testcases_bad_filepath(self):
|
||||
testcase_file_path = os.path.join(os.getcwd(), 'test/data/demo')
|
||||
with self.assertRaises(exception.ParamsError):
|
||||
utils.load_testcases(testcase_file_path)
|
||||
|
||||
def test_load_json_testcases(self):
|
||||
testcase_file_path = os.path.join(os.getcwd(), 'test/data/demo.json')
|
||||
testcases = utils.load_testcases(testcase_file_path)
|
||||
self.assertEqual(len(testcases), 2)
|
||||
self.assertIn('name', testcases[0])
|
||||
self.assertIn('request', testcases[0])
|
||||
self.assertIn('response', testcases[0])
|
||||
self.assertIn('url', testcases[0]['request'])
|
||||
self.assertIn('method', testcases[0]['request'])
|
||||
|
||||
def test_load_yaml_testcases(self):
|
||||
testcase_file_path = os.path.join(os.getcwd(), 'test/data/demo.yml')
|
||||
testcases = utils.load_testcases(testcase_file_path)
|
||||
self.assertEqual(len(testcases), 2)
|
||||
self.assertIn('name', testcases[0])
|
||||
self.assertIn('request', testcases[0])
|
||||
self.assertIn('response', testcases[0])
|
||||
self.assertIn('url', testcases[0]['request'])
|
||||
self.assertIn('method', testcases[0]['request'])
|
||||
Reference in New Issue
Block a user