体验地址:
http://1.12.224.200/
账号:test
密码:test
设计接口信息model
class Testcase(models.Model):
t_name = models.CharField("用例名称", null=True, max_length=50)
t_method = models.IntegerField("请求方法", null=True) # 1:get, 2:post, 3:put, 4:delete
t_url = models.TextField("url请求地址", null=True)
t_params = models.CharField("请求参数", null=True, default=[], max_length=255)
t_type = models.IntegerField("参数类型", null=True, default=2) # 1:form-data, 2:Json, 3:x-www-form-urlencoded, 4:None
api_type = models.IntegerField("接口类型", null=True, default=1) # 0:普通接口 1:海外接口 2:国内接口
t_header = models.TextField("请求头", null=True, default={})
t_body = models.TextField("请求体", null=True, default={})
t_extract = models.CharField("参数提取", null=True, default=[], max_length=255)
update_time = models.DateTimeField("更新时间", auto_now=True)
create_time = models.DateTimeField("创建时间", auto_now_add=True)
t_environment = models.ForeignKey(Environment, on_delete=models.CASCADE, default=1)
t_user = models.ForeignKey(Userinfo, on_delete=models.CASCADE)
def __str__(self):
return self.t_name
# 断言
class Asserts(models.Model):
assert_key = models.CharField("断言字段名", null=False, max_length=255)
assert_value = models.TextField("断言结果", null=False)
assert_testcase = models.ForeignKey(Testcase, on_delete=models.CASCADE)
def __str__(self):
获取单个接口信息
class Singlecase(View):
# 获取单个测试用例
def post(self, request, *args, **kwargs):
data = json.loads(request.body)
case_id = data["menu_id"]
menu = Menu.objects.get(id=case_id)
c_id = menu.testcase_id
asserts = Asserts.objects.filter(assert_testcase_id=c_id)
assert_list = []
for a in asserts:
assert_dict = {
"assert_key": a.assert_key,
"assert_value": a.assert_value
}
assert_list.append(assert_dict)
case = Testcase.objects.get(id=c_id)
case_dict = {
"id": menu.testcase_id,
"name": case.t_name,
"method": case.t_method,
"api_type": case.api_type,
"url": case.t_url,
"body_type": case.t_type,
"params": json.loads(case.t_params.replace("\'", "\"")),
"headers": case.t_header,
"extract": json.loads(case.t_extract.replace("\'", "\"")),
"body": json.loads(case.t_body.replace("\'", "\"")),
"environment_id": case.t_environment_id,
"assert_form": assert_list
}
return JsonResponse(case_dict)
url地址声明
urlpatterns = [
path("api/testcase/list/singlecase", Singlecase.as_view()), # 获取单个接口
]