utils: testcases loader

This commit is contained in:
debugtalk
2017-06-20 19:43:44 +08:00
parent f06adb064d
commit 45351e3ba7
6 changed files with 141 additions and 0 deletions

0
ate/__init__.py Normal file
View File

16
ate/exception.py Normal file
View 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
View 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
View 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
View 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
View 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'])