使用Django+Pytest搭建在线自动化测试平台

一、测试平台:

解决分散用例执行方式,提供统一测试用例执行过程、用例管理、测试报告

主要是基于:

    fastapi+vue.js
    django+vue.js
    django

二、搭建过程

2.1 使用django搭建一个web系统

1. 创建项目

  django-admin startproject TestPlatform

创建python的包,测试平台的配置和功能

2. 创建app

django-admin startapp web

创建python的包,具体的功能代码

(1)在TestPlatform/Web/apps.py中注册app

1

2

3

4

5

from django.apps import AppConfig

class WebConfig(AppConfig):

    # default_auto_field = 'django.db.models.BigAutoField'

    name = 'Web'

    verbose_name = "自动化测试"

(2) 在TestPlatform/TestPlatform/settings.py中进行相关设置

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

INSTALLED_APPS = [

    'django.contrib.admin',

    'django.contrib.auth',

    'django.contrib.contenttypes',

    'django.contrib.sessions',

    'django.contrib.messages',

    'django.contrib.staticfiles',

    'Web.apps.WebConfig'

]

LANGUAGE_CODE = 'zh-hans'# 设置中文

TIME_ZONE = 'Asia/Shanghai'# 设置时区

USE_I18N = True

USE_L10N = True

USE_TZ = False

MEDIA_ROOT = 'uploads/'

MEDIA_URL = 'uploads/'

(3)编辑TestPlatform/TestPlatform/urls.py文件

1

2

3

4

5

6

7

8

9

from django.conf import settings

from django.conf.urls.static import static

from django.contrib import admin

from django.urls import path

# 定义http路由,是web系统的入口点

urlpatterns = static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) + [

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

]

(4)启动测试平台

1

python manage.py runserver

2.2 搭建测试框架

1. 定义model

model驱动开发

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

import pathlib

from django.db import models

# 定义model

# 抽象化

from django.utils import html

class Task(models.Model):

    name = models.CharField("用例名称", max_length=20)

    case = models.FileField("用例文件", upload_to='tests/%Y_%m_%d_%H_%M_%S/')

    status = models.IntegerField(

        "测试状态", default=-1, choices=[

            (-1, '初始化'),

            (0, '马上执行'),

            (1, '正在执行测试用例'),

            (2, '正在生成测试报告'),

            (3, '执行完毕'),

        ]

    )

    run_datatime = models.DateTimeField(

        "最近执行时间", null=True, blank=True

    )

    class Meta:

        verbose_name_plural = verbose_name = "测试任务"

    def __str__(self):

        return self.name

    def get_url(self, _type):

        """生成报告或者测试日志的Url"""

        if self.case and self.status == 3# 执行完毕

            case_path = pathlib.PurePosixPath(str(self.case))

            root_path = pathlib.PurePosixPath('/uploads')

            if _type == 'report'# 报告的url

                report_path = root_path / case_path.parent / "report/index.html"

            elif _type == 'log'# 日志的url

                report_path = root_path / case_path.parent / "pytest.txt"

            else:

                report_path = '_'

            return html.format_html(f"<a href='{report_path}' target='_blank'> 点击查看</a>")

        else:

            return "-"

2. 定义界面

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

from django.contrib import admin

from .models import Task

# Register your models here.

@admin.register(Task)

class TaskAdmin(admin.ModelAdmin):

    # 决定了model 怎么显示

    list_display = ("id", "name", "status", "run_datatime",

                    "report_url", "log_url",

                    )

    # 要显示的字段

    readonly_fields = ('run_datatime',)

    def report_url(self, obj):

        return obj.get_url('report')

    report_url.short_description = '测试报告'

    def log_url(self, obj):

        return obj.get_url('url')

    log_url.short_description = '执行日志'

3. 执行数据库迁移

1

2

python manage.py makemigrations

python manage.py migrate

三、平台如何管理

1. 创建管理员账号

   python manage.py createsuperuser

  用户名:admin

  邮箱:admin@qq.com

  密码:admin

2. 调整页面显示

3. 执行测试用例

在models.py文件中调用pytest,pytest执行yaml文件(关键字驱动)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

import pathlib

from datetime import datetime

from django.db import models

# 定义model

# 抽象化

from django.utils import html

class Task(models.Model):

    name = models.CharField("用例名称", max_length=20)

    case = models.FileField("用例文件", upload_to='tests/%Y_%m_%d_%H_%M_%S/')

    status = models.IntegerField(

        "测试状态", default=-1, choices=[

            (-1, '初始化'),

            (0, '马上执行'),

            (1, '正在执行测试用例'),

            (2, '正在生成测试报告'),

            (3, '执行完毕'),

        ]

    )

    run_datatime = models.DateTimeField(

        "最近执行时间", null=True, blank=True

    )

    class Meta:

        verbose_name_plural = verbose_name = "测试任务"

    def __str__(self):

        return self.name

    def get_url(self, _type):

        """生成报告或者测试日志的Url"""

        if self.case and self.status == 3# 执行完毕

            case_path = pathlib.PurePosixPath(str(self.case))

            root_path = pathlib.PurePosixPath('/uploads')

            if _type == 'report'# 报告的url

                report_path = root_path / case_path.parent / "report/index.html"

            elif _type == 'log'# 日志的url

                report_path = root_path / case_path.parent / "pytest.txt"

            else:

                report_path = '_'

            return html.format_html(f"<a href='{report_path}' target='_blank'> 点击查看</a>")

        else:

            return "-"

    def save(self, *args, **kwargs):

        super().save(*args, **kwargs)

        # 判断是否需要启动测试框架,执行测试用例

        if self.status == 0:

            self.status = 1  # 修改状态:正在执行

            self.run_datatime = datetime.datetime.now()

            super().save()

            # 启动测试框架

            import pytest

            pytest.main(self.case.path)  # 执行指定的测试用例文件

            self.status = 3  # 修改状态:执行完毕

            self.run_datatime = datetime.datetime.now()

            super().save()

​现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:485187702【暗号:csdn11】

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走! 希望能帮助到你!【100%无套路免费领取】

### 回答1: 要在 Linux 上搭建测试环境,需要先安装必要的软件和工具,具体步骤如下: 1. 安装操作系统,可以选择 Ubuntu、CentOS 等发行版本。 2. 安装编程语言运行环境。例如,如果你要测试 Python 代码,需要安装 Python 以及相应的第三方库。 3. 安装数据库。如果你要测试数据库相关功能,需要安装 MySQL、PostgreSQL 等数据库系统。 4. 安装测试工具。可以使用常用的单元测试框架,如 Python 的 unittest,测试数据库相关功能可使用 Pytest-Django 5. 安装编辑器或 IDE。可以使用常用的编辑器,如 VSCode, PyCharm 等。 6. 配置环境变量。 7. 进行测试,通过测试结果来验证代码的正确性。 8. 记录测试结果,进行总结。 这些步骤可以帮助你在 Linux 上搭建一个稳定可靠的测试环境。但还有许多细节需要注意,具体的操作过程需要根据你的需求来定制。 ### 回答2: 搭建Linux测试环境是为了开发和测试软件的过程中,能够模拟真实的生产环境进行测试。下面是搭建Linux测试环境的步骤: 1. 选择合适的Linux发行版:根据需要选择合适的Linux发行版,如Ubuntu、CentOS等,根据自身熟悉程度和软件要求进行选择。 2. 准备物理或虚拟机:根据需要,可以选择物理服务器或虚拟机来运行Linux操作系统。物理服务器需要购买服务器硬件并进行安装,而虚拟机可以在已有的物理服务器上创建。 3. 安装Linux操作系统:根据所选择的Linux发行版,参考官方文档或网络上的教程,进行操作系统的安装。 4. 配置网络:根据需求,配置网络连接,包括静态IP或动态IP的设置,DNS服务器的配置等。 5. 安装必要的软件:根据测试需要,安装必要的软件和依赖项。可以通过包管理器来安装软件包,如apt-get、yum等,也可以手动下载源代码编译安装。 6. 配置测试环境:根据具体的测试要求,配置相应的测试环境,如数据库、web服务器、应用程序等。可以参考软件官方文档或在线资源进行配置。 7. 设置权限和安全:为了保护测试环境的安全性,设定适当的权限和防火墙规则,以防止未经授权的访问和攻击。 8. 进行测试测试人员可以根据需求使用相应的测试工具和方法对搭建好的测试环境进行测试。 9. 进行维护和更新:定期进行维护和更新操作系统和软件的版本,修复已知的漏洞和bug,以保持测试环境的稳定性和安全性。 通过以上步骤,就可以搭建一个Linux测试环境,用于模拟真实的生产环境进行软件开发和测试工作。 ### 回答3: Linux是一个开源的操作系统,可以用来搭建各种测试环境。下面是搭建Linux测试环境的步骤: 1. 选择适合的Linux发行版:有很多种Linux发行版可供选择,如Ubuntu、CentOS、Debian等。根据自己的需求和经验,选择一个合适的发行版。 2. 安装Linux系统:下载选定的发行版的安装镜像,通过制作启动盘或者虚拟机来安装Linux系统。 3. 更新系统:安装完成后,运行系统更新命令,更新系统软件包和内核版本,确保系统是最新的。 4. 安装测试工具:根据自己的测试需求,选择相应的测试工具进行安装,如Jenkins、Selenium、JMeter等。可以通过包管理器(如apt、yum)或者直接从官方网站下载安装包进行安装。 5. 配置网络:根据测试需求,配置适当的网络环境。可以通过配置网络接口、DNS、DHCP等来模拟不同的网络环境,以进行测试。 6. 配置测试环境:根据测试需求,配置各种测试环境。例如,如果需要测试Web应用程序,需要安装和配置Nginx、Apache等服务器软件;如果需要测试数据库,需要安装和配置MySQL、PostgreSQL等数据库软件。 7. 创建测试数据:根据需要,创建测试数据并导入到测试环境中。可以使用SQL脚本、CSV文件等方式来创建和导入测试数据。 8. 编写测试脚本:根据测试需求,编写测试脚本或者测试用例。可以使用各种编程语言和测试框架来编写测试脚本,如Python和JUnit。 9. 运行测试使用编写好的测试脚本来运行测试。根据需要,可以执行自动化测试或者手动测试。 10. 分析测试结果:分析测试结果,查看测试覆盖率、错误率和性能数据等。根据测试结果,优化系统和测试环境。 通过以上步骤,可以在Linux系统上搭建一个稳定且可靠的测试环境,用于进行各种类型的软件测试
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值