当前位置:   article > 正文

搭建Python+Django+Requests+Pytest+Alure接口自动化框架_django pytest allure

django pytest allure

1.新建Django项目以及项目配置

一、新建app

python manage.py startapp app
  • 1

二、settings文件配置

# 域名访问权限
ALLOWED_HOSTS = ["*"]

# 数据库
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',   # 数据库引擎
        'NAME': 'demo_database',  # 数据库名,先前创建的
        'USER': 'root',     # 用户名,可以自己创建用户
        'PASSWORD': 'demo2021',  # 密码
        'HOST': '127.0.0.1',  # mysql服务所在的主机ip
        'PORT': '3306',         # mysql服务端口
    }

# 加载的自带或者自己定制的app包路径列表
INSTALLED_APPS = [
    'django.contrib.admin',  # 管理站点
    'django.contrib.auth',  # 认证系统
    'django.contrib.contenttypes',  # 用于内容类型的框架
    'django.contrib.sessions',  # 会话框架,session数据可以在数据库中的django_session表中查看
    'django.contrib.messages',  # 消息框架
    'django.contrib.staticfiles',  # 管理静态文件的框架
    'demo', # 自己的app
]

# 语言版本切换
LANGUAGE_CODE = 'zh-hans'
# 时区切换
TIME_ZONE = 'Asia/Shanghai'
# 设置国际化
USE_I18N = True
USE_L10N = True
USE_TZ = True
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'

# 静态文件地址
STATIC_URL = '/static/'

# 指定静态文件的目录所在地
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static').replace('\\', '/'),
    os.path.join(BASE_DIR, 'templates').replace('\\', '/'),
)
  • 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

三、urls路由配置

# 前端更具路由访问到后台views
urlpatterns = [
    path('admin/', admin.site.urls),
    path('regist/', views.regist),
    path('userRegist/', views.userRegist),
    path('', views.login),
]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

四、数据库(models)配置

# 例子:用户表
class User(models.Model):
    user_name = models.CharField(max_length=16)
    password = models.CharField(max_length=16)
    gender = models.CharField(max_length=20)
    create_time = models.DateField(auto_now_add=True)
    update_time = models.DateField(auto_now=True)
    enable = models.BooleanField(default=True)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

在这里插入图片描述
五、数据库迁移

# 1、生成迁移文件
python manage.py makemigrations
# 2、生成数据库表
python manage.py migrate
  • 1
  • 2
  • 3
  • 4

2.搭建框架结构目录

1、config,存放配置文件如conf_db数据库配置
2、interface,接口规范
3、logs,日志文件,info.log,erro.log
4、reports,存放报告
5、testcase,存放测试用例
6、tools,工具类,api,随机函数二次封装,获取excel内容等…

在这里插入图片描述
3.安装Pytest

一.常用装饰器

1.pytest.mark.parametrize('参数名',list)可以实现测试用例参数化
	-第一个参数是字符串,多个参数中间用逗号隔开
	-第二个参数是list,多组数据用元祖类型;传三个或更多参数也是这样传。list的每个元素都是一个元组,元组里的每个元素和按参数顺序一一对应
2.pytest.mark.skip(设置跳过测试用例的装饰器)
3.pytest.mark.xfail(标记测试用例”预期失败“的装饰器)
4.pytest.mark.自定义名称
	-自定义marker:创建pytest的配置文件pytest.ini,然后在里面定义标记
5.pytest.fixture()
	-此方法可以完成测试之前的初始化
	-可以返回数据给测试函数
参数scope="module"
	function:每个test都运行,默认是function的scope
	class:每个class的所有test只运行一次
	module:每个module的所有test只运行一次
	session:每个session只运行一次
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

4.安装Allure插件

一.安装pytest-allure依赖库

二.allure常用装饰器,定制化报告

@allure.title("用例标题0")
@allure.description("这里是对test_0用例的一些详细说明")
@allure.feature('这里是一级标签')   分组第一层
@allure.story(‘二级标签’)  分组第二层
@allure.severity(‘allure.severity_level.CRITICAL’)    标记严重级别
	BLOCKER = 'blocker'  中断缺陷(客服端程序无响应,无法执行下一步骤)
	CRITICAL = 'critical'  临界缺陷(功能点缺失)
	NORMAL = 'normal'  普通缺陷(数据计算错误)
	MINOR = 'minor'  次要缺陷(界面错误与ui需求不符)
	TRIVIAL = 'trivial'  轻微缺陷(必须项无提示,或者提示不规范)
@allure.step(‘这里是操作步骤的描述’)
@allure.attach(body, name, attachment_type, extension)
	body - 要写入文件的原始内容。
	name - 包含文件名的字符串
	attachment_type- 其中一个allure.attachment_type值
	extension - 提供的将用作创建文件的扩展名
@allure.link('链接')  @allure.issue('链接')  @allure.testcase('链接')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

三.报告加入日志信息

import logging

logger = logging.getLogger()
# 加入日志信息
logger.setLevel(level=logging.INFO)

# 正常日志信息
def info(msg):
    logger.info(msg)

# 调试日志信息
def debug(msg):
    logger.debug(msg)
    
# 警告日志信息
def warning(msg):
    logger.warning(msg)
    
# 错误日志信息
def error(msg):
    logger.error(msg)
    
# 重要的信息
def critical(msg):
    logger.critical(msg)
  • 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

4.加入发送邮件功能

python发送邮件需要用到python自带的两个模块,smtplib和email

> 创建SMTP的操作对象并连接smtp目标服务器,可以是163、QQ等
> 根据自己的账号登录目标服务器(自己的邮箱地址和邮箱授权码)
> 调用对象中的方法,发送邮件到目标地址
  • 1
  • 2
  • 3
  • 4
  • 5

代码块

import smtplib
from email.mime.text import MIMEText
from email.header import Header


def test_send_text():
    # 第三方 SMTP 服务
    mail_host = "smtp.126.com"  # 设置服务器
    mail_user = "-----@126.com"  # 用户名
    mail_pass = "授权码"  # 口令,授权码

    sender = '-----@126.com'
    receivers = ['-----@qq.com', ]  # 接收邮件,可设置为你的QQ邮箱或者其他邮箱,可设置多个

    message = MIMEText('接口自动化发送邮件测试...', 'plain', 'utf-8')
    message['From'] = sender
    message['To'] = ';'.join(receivers)

    subject = 'Python SMTP 邮件测试'
    message['Subject'] = Header(subject, 'utf-8')
    try:
        smtp = smtplib.SMTP()
        smtp.connect(mail_host, 25)  # 25 为SMTP端口号
        smtp.login(mail_user, mail_pass)    # 登录验证
        smtp.sendmail(sender, receivers, message.as_string())
        print("邮件发送成功")
    except smtplib.SMTPException:
        print("Error: 无法发送邮件")
  • 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
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/518063
推荐阅读
相关标签
  

闽ICP备14008679号