You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

ddt_case.py 3.1 KiB

2 years ago
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. import ddt, unittest, os, yaml
  2. from Interface.testFengzhuang import TestApi
  3. from public.get_excel import makedata
  4. from public.log import LOG
  5. from public.panduan import assertre
  6. from config.config import TestPlanUrl
  7. file_dir = os.path.join(os.getcwd(), 'test_Report')
  8. file_reslut = os.path.join(file_dir, 'caseresult.yaml')
  9. data_test = makedata()
  10. def write(data):
  11. with open(file_reslut, 'a', encoding='utf-8') as f:
  12. yaml.dump(data, f, allow_unicode=True)
  13. def read(data):
  14. f = open(file_reslut, 'r', encoding='utf-8')
  15. d = yaml.load(f, Loader=yaml.FullLoader)
  16. return d[data]
  17. @ddt.ddt
  18. class MyTest(unittest.TestCase):
  19. def setUp(self):
  20. LOG.info('测试用例开始执行')
  21. def tearDown(self):
  22. LOG.info('测试用例执行完毕')
  23. @ddt.data(*data_test)
  24. def test_api(self, data_test):
  25. '''
  26. 1.处理参数
  27. 2.判断参数是否有依赖
  28. 3.依赖用例参数从本地获取
  29. 4.获取失败,用例失败
  30. 5.拼接后请求
  31. '''
  32. parem = {'key': data_test['key']}
  33. try:
  34. parem_dict = eval(data_test['coneent'])
  35. for key, value in parem_dict.items():
  36. if str(value).startswith("&"):
  37. try:
  38. reply_key_id = str(value).split("&")[-1].split("=")
  39. reply_keyid = reply_key_id[0]
  40. reply_key_key = reply_key_id[1]
  41. reslut = read(reply_keyid)
  42. if reslut is None:
  43. self.assertTrue(False, '依赖用例获取失败')
  44. get_value = reslut[reply_key_key]
  45. if get_value is None:
  46. self.assertTrue(False, '依赖参数获取失败,不存在')
  47. parem_dict[key] = get_value
  48. except Exception as e:
  49. LOG.info("用例依赖执行失败:" + str(e))
  50. self.assertTrue(False, '用例依赖执行失败')
  51. parem.update({'info': parem_dict})
  52. except:
  53. self.assertTrue(False, msg="参数格式不对")
  54. LOG.info(parem)
  55. api = TestApi(url=TestPlanUrl + data_test['url'],
  56. parame=parem,
  57. method=data_test['method'])
  58. LOG.info('输入参数:url:%s,key:%s,参数:%s,请求方式:%s' % (data_test['url'], data_test['key'], data_test['assertconnect'],
  59. LOG.info('输入参数:url:%s,key:%s,参数:%s,请求方式:%s' % (
  60. data_test['url'], data_test['key'], data_test['assertconnect'],
  61. data_test['method']))))
  62. apijson = api.getJson()
  63. reslut = {}
  64. reslut[data_test['id']] = apijson
  65. write(reslut)
  66. LOG.info('返回结果:%s' % apijson)
  67. assertall = assertre(asserassert=data_test['assertconnect'])
  68. self.assertNotEqual(dict(assertall), dict(apijson), msg='预期和返回不一致')

Introduction

生成接口测试报告

No topics