#!/usr/bin/env python # -*- coding: utf-8 -*- """ Copyright (c) 2016,小忆机器人 All rights reserved. 摘 要:语义的单元测试 创 建 者:余菲 创建日期:16/6/19 """ import sys import glob import os import unittest import yaml from unittest import main sys.path.append(os.path.dirname(os.path.split(os.path.realpath(__file__))[0])) os.chdir('..') import nlu.animal as animal import nlu.media.story as story import nlu.media.opera as opera import nlu.volume as volume import nlu.expand_instruction as expand_instruction import nlu.display as display import nlu.mode as mode import nlu.motion as motion import nlu.profile as profile import nlu.vehicle as vehichel import nlu.sight as sight import nlu.battery as battery import nlu.dance as dance import nlu.photo as photo import nlu.entertainment as entertainment import nlu.recognition as recognition import nlu.xiaoyi as xiaoyi from nlu.nlu_framework import Nlu_Framework from utils.utils import force_utf8_new def load_from_yaml(file_name): """ 从yaml加载测试信息,返回生成器 :param file_name: :return: """ f = open(file_name) return yaml.safe_load_all(f) class Rule_Test(unittest.TestCase): """ 所有语义的单元测试 """ def setUp(self): print 'setUp' Nlu_Framework.register(animal.Animal) Nlu_Framework.register(battery.Battery) Nlu_Framework.register(dance.Dance) Nlu_Framework.register(display.Display) Nlu_Framework.register(entertainment.Entertainment) Nlu_Framework.register(photo.Photo) Nlu_Framework.register(recognition.Recognition) Nlu_Framework.register(xiaoyi.XiaoYi) Nlu_Framework.register(story.Story) Nlu_Framework.register(volume.Volume) Nlu_Framework.register(expand_instruction.ExtendInstruction) Nlu_Framework.register(mode.Mode) Nlu_Framework.register(motion.Motion) Nlu_Framework.register(profile.Profile) Nlu_Framework.register(vehichel.Vehicle) Nlu_Framework.register(sight.Sight) Nlu_Framework.register(opera.Opera) print 'setUp Over' def test_yaml(self): # self._generage() file_list = glob.glob('./test/conf/*') for file_name in file_list: print 'test' + file_name yaml_info_list = load_from_yaml(file_name) for yaml_info in yaml_info_list: match_dict_list = Nlu_Framework.match(force_utf8_new(yaml_info['input'])) print yaml_info['input'] self.assertDictEqual(force_utf8_new(match_dict_list[0]), force_utf8_new(yaml_info['output'])) def _generage(self): """ 第一次产生测试yaml的方法 :return: """ file_list = glob.glob('./test/conf/*') for file_name in file_list: yaml_info_list = load_from_yaml(file_name) print file_name yaml_list = [] for yaml_info in yaml_info_list: match_dict_list = Nlu_Framework.match(force_utf8_new(yaml_info['input'])) result_dict = {"input": force_utf8_new(yaml_info['input']), "output": match_dict_list[0]} yaml_list.append(result_dict) yaml_list = force_utf8_new(yaml_list) print yaml.safe_dump_all(yaml_list, allow_unicode=True, encoding='utf-8') if __name__ == '__main__': main()