import ddt, unittest, os, yaml from Interface.testFengzhuang import TestApi from public.get_excel import makedata from public.log import LOG from public.panduan import assertre from config.config import TestPlanUrl file_dir = os.path.join(os.getcwd(), 'test_Report') file_reslut = os.path.join(file_dir, 'caseresult.yaml') data_test = makedata() def write(data): with open(file_reslut, 'a', encoding='utf-8') as f: yaml.dump(data, f, allow_unicode=True) def read(data): f = open(file_reslut, 'r', encoding='utf-8') d = yaml.load(f, Loader=yaml.FullLoader) return d[data] @ddt.ddt class MyTest(unittest.TestCase): def setUp(self): LOG.info('测试用例开始执行') def tearDown(self): LOG.info('测试用例执行完毕') @ddt.data(*data_test) def test_api(self, data_test): ''' 1.处理参数 2.判断参数是否有依赖 3.依赖用例参数从本地获取 4.获取失败,用例失败 5.拼接后请求 ''' parem = {'key': data_test['key']} try: parem_dict = eval(data_test['coneent']) for key, value in parem_dict.items(): if str(value).startswith("&"): try: reply_key_id = str(value).split("&")[-1].split("=") reply_keyid = reply_key_id[0] reply_key_key = reply_key_id[1] reslut = read(reply_keyid) if reslut is None: self.assertTrue(False, '依赖用例获取失败') get_value = reslut[reply_key_key] if get_value is None: self.assertTrue(False, '依赖参数获取失败,不存在') parem_dict[key] = get_value except Exception as e: LOG.info("用例依赖执行失败:" + str(e)) self.assertTrue(False, '用例依赖执行失败') parem.update({'info': parem_dict}) except: self.assertTrue(False, msg="参数格式不对") LOG.info(parem) api = TestApi(url=TestPlanUrl + data_test['url'], parame=parem, method=data_test['method']) LOG.info('输入参数:url:%s,key:%s,参数:%s,请求方式:%s' % (data_test['url'], data_test['key'], data_test['assertconnect'], LOG.info('输入参数:url:%s,key:%s,参数:%s,请求方式:%s' % ( data_test['url'], data_test['key'], data_test['assertconnect'], data_test['method'])))) apijson = api.getJson() reslut = {} reslut[data_test['id']] = apijson write(reslut) LOG.info('返回结果:%s' % apijson) assertall = assertre(asserassert=data_test['assertconnect']) self.assertNotEqual(dict(assertall), dict(apijson), msg='预期和返回不一致')