通过Django Admin+HttpRunner1.5.6实现简易接口测试平台

本文将介绍如何使用Django Admin和HttpRunner1.5.6搭建一个简易的接口测试平台。

1. 确定需求

在开始之前,我们需要先确定自己的需求。接口测试平台是什么?它能够为我们带来什么好处?一些可能的需求包括:

1.1 提高测试效率

接口测试平台可以自动化执行测试用例并生成测试报告,提高测试效率。我们只需要在平台上添加测试用例,便可以快速地执行测试并得到结果。

1.2 方便管理测试用例

接口测试平台可以让我们方便地管理测试用例,添加、修改、删除都很方便。我们可以把所有测试用例都放在一个平台上进行管理,而不需要分散在多个文档或工具中。

2. 环境搭建

在开始搭建接口测试平台之前,我们需要先准备好以下环境:

- Python 3

- Django 2

- HttpRunner 1.5.6

可以使用以下命令安装以上环境:

pip install django==2.0.2

pip install httprunner==1.5.6

3. 创建Django项目

使用以下命令来创建一个基于 Django 的项目:

django-admin startproject my_project

我们可以使用以下命令来启动这个项目,在浏览器中查看它的效果:

python manage.py runserver

现在,我们可以在浏览器中打开 `http://127.0.0.1:8000/` 来查看我们的 Django 项目。

4. 创建Django App

现在,我们需要在 Django 中创建一个应用程序,它将用于构建接口测试平台。使用以下命令创建一个名为 `myapp` 的 Django 应用程序:

python manage.py startapp myapp

5. 配置Django数据库

接下来,我们需要在 `myapp` 中配置数据库。打开 `my_project/settings.py` 文件,在 `INSTALLED_APPS` 中添加 `myapp`:

INSTALLED_APPS = [

...

'myapp',

]

然后,在同一个文件中,找到 `DATABASES` 设置,并更改为以下内容:

DATABASES = {

'default': {

'ENGINE': 'django.db.backends.sqlite3',

'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),

}

}

这将告诉 Django 使用 SQLite 数据库。

接下来,运行以下命令来创建数据库:

python manage.py makemigrations

python manage.py migrate

6. 创建Django管理后台

现在,我们需要为 `myapp` 创建一个 Django 管理后台。打开 `myapp/admin.py` 文件,并输入以下代码:

from django.contrib import admin

from .models import Testcase

admin.site.register(Testcase)

这将为 `Testcase` 模型添加默认的 Django 管理界面。

7. 准备HttpRunner测试用例

在开始构建接口测试平台之前,我们需要先准备好一些 HttpRunner 测试用例。HttpRunner 是一个开源的接口自动化测试框架,它支持编写 YAML/JSON 格式的 Http 接口测试用例。

以下是 HttpRunner 测试用例的一个例子:

- config:

name: demo

variables:

base_url: http://127.0.0.1:8000

user_id: 1

token: xxxxx

- test:

name: demo test

request:

url: ${base_url}/api/users/${user_id}/

method: GET

headers:

Authorization: Token ${token}

json: null

validate:

- eq: [status_code, 200]

- eq: [content.code, 0]

我们需要将测试用例存储在 `my_project` 项目中的 `myapp` 应用程序中。

首先,在 `myapp/models.py` 文件中创建 `Testcase` 模型:

from django.db import models

class Testcase(models.Model):

name = models.CharField(max_length=100, blank=True)

description = models.TextField(blank=True)

testcases = models.TextField(blank=True)

create_time = models.DateTimeField(auto_now_add=True)

def __str__(self):

return self.name

然后,在 `myapp/admin.py` 文件中添加以下内容:

from django import forms

from django.contrib import admin

from .models import Testcase

from djangohelpers import admin_forms

@admin.register(Testcase)

class TestcaseAdmin(admin.ModelAdmin):

form = admin_forms.TestcaseAdminForm

list_display = ('name', 'create_time')

fields = ('name', 'description', 'testcases')

class Meta:

model = Testcase

以上代码将为 `Testcase` 模型创建一个自定义管理界面。我们可以在后台管理页面上添加测试用例。

8. 执行测试用例

接下来,我们需要编写一个视图函数来执行测试用例,并返回测试报告。在 `myapp/views.py` 文件中,添加以下代码:

import io

from django.shortcuts import render

from httprunner import HttpRunner, logger

from .models import Testcase

def run_test(request, testcase_id=None):

testcase = Testcase.objects.get(id=testcase_id)

# 解析测试用例,转化为列表

testcases_content = testcase.testcases

runner = HttpRunner()

runner.run(testcases_content)

# 生成测试报告

html_report = runner.gen_html_report()

html_report = html_report.encode('utf-8')

# 将测试报告转换为字节流

report_file = io.BytesIO()

report_file.write(html_report)

report_file.seek(0)

return render(request, 'test_report.html', context={'report': report_file})

以上代码将获取测试用例,并使用 HttpRunner 执行测试,最终生成测试报告。

9. 创建Django路由

现在,我们需要为 `myapp` 添加一个路由。在 `my_project/urls.py` 文件中添加以下代码:

from django.contrib import admin

from django.urls import path, include

from myapp.views import run_test

urlpatterns = [

path('admin/', admin.site.urls),

path('runtest/', run_test),

]

以上代码将为 `/runtest` 添加一个路由,并将其映射到 `run_test` 视图函数。

10. 构建前端页面

最后,我们需要为接口测试平台构建前端页面,以便用户能够轻松的添加和执行测试用例。

我们使用 Django Admin 自带的页面,显示测试用例。当用户点击执行测试用例时,我们将调用 `run_test` 视图函数来执行测试并显示测试报告。

在 `myapp/templates` 目录中,创建 `test_report.html` 模板文件,并添加以下代码:

{% extends 'admin/base_site.html' %}

{% block content %}

{% if report %}

{% else %}

{% endif %}

{% endblock %}

最终,我们将得到一个简单的接口测试平台。用户可以添加测试用例,并在页面上执行测试并查看测试报告。

总结

在本文中,我们使用了 Django Admin 和 HttpRunner1.5.6 搭建了一个简单的接口测试平台。通过这个平台,我们可以方便地添加、修改和执行测试用例,并且可以自动生成测试报告,提高了测试效率。

后端开发标签