本文将介绍如何使用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 %}
No report to display.
{% endif %}
{% endblock %}
最终,我们将得到一个简单的接口测试平台。用户可以添加测试用例,并在页面上执行测试并查看测试报告。
总结
在本文中,我们使用了 Django Admin 和 HttpRunner1.5.6 搭建了一个简单的接口测试平台。通过这个平台,我们可以方便地添加、修改和执行测试用例,并且可以自动生成测试报告,提高了测试效率。