pytest测试框架+jenkins结合pytest+jenkins邮件通知配置
刚刚做完一个项目,由于这是一个方案项目,而不是产品,所以各种准备很不充分,很多公司的能力不能复用,整个团队又都是新员工,而且有部分实习生,匆忙上马,今天对我的自动化框架做一个回溯
自动化测试框架的选择上,我选择pytest框架,下面是我的示例文件,不是我真正的自动化用例,主要为了给刚入门的小伙伴指引
一、测试项目目录设计

lib目录:存放我的公共的方法
log目录:存放我的测试案例的日志路径
report目录:存放的pytest的执行报告
test_case目录:存放真正要执行的案例
testfile目录:存放我的测试文件
conftest.py文件:pytest的文件,具体可以看我的前一篇博客:https://www.cnblogs.com/bainianminguo/p/14338222.html
python.ini文件:pytest的配置文件,具体可以看我的前一篇博客:https://www.cnblogs.com/bainianminguo/p/13773717.html
run_case.py文件:是执行自动化案例的入口文件
二、pytest的案例如何设计
1、入口函数:run_case.py
# -*- coding: utf-8 -*-
import pytest import os if __name__ == '__main__':
pytest.main(["-v","-s","--html=./report/report.html" ])
2、pytest的配置文件:pytest.ini
[pytest]
;addopts=-s --html=report.html --reruns 3 --reruns-delay 2
;--html=./report/report.html
addopts=-s
testpaths = test_case
python_files = test_*.py
python_classes = Test_*
python_functions = test_*
markers =
level1
level2
level3
bvt
3、全局共享配置文件:conftest.py文件
# -*- coding:utf-8 -*-
import pytest
from lib import basefunc @pytest.fixture(scope="function",autouse=True)
def setup_function():
print("执行conftest文件")
basefunc.delfile()
yield
print("执行conftest文件")
basefunc.delfile()
我的conftest文件中的scope=“function”,autouse=True,所以是每个测试函数都会执行这个函数

yield前面的代码是函数执行前执行的,yield后面的代码是是函数执行后需要执行的代码
4、lib目录下,存储我的公共的方法,包括一些日志模块等

logobj.py
# Auther Bob
# --*--coding:utf-8--*--
import logging
import os # z注册一个全局的日志对象
class GetLogObj(object):
basepath = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))),"log")
def __init__(self,filename):
self.path = os.path.join(GetLogObj.basepath,filename+".txt") def log(self):
log_obj = logging.getLogger("administrator")
log_obj.setLevel(logging.DEBUG) # 注册一个打印到文件的日志对象
fh = logging.FileHandler(self.path)
fh.setLevel(logging.DEBUG) # 设定日志打印的格式
log_format = logging.Formatter("%(name)s %(message)s %(levelno)s %(thread)d %(process)d %(asctime)s",
datefmt='%m/%d/%Y:%H:%M:%S %p') # 在打印到文件的日志对象中应用日志格式
fh.setFormatter(log_format) # 将打印到屏幕和日志的对象注册到全局的日志对象中
log_obj.addHandler(fh) return log_obj
basefunc.py
# -*- coding:utf-8 -*-
import os
import time def addfile(filename):
file = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))),'testfile',filename + "_" + str(time.time()))
with open(file,mode="a") as f:
for i in range(1,200):
f.write(str(i))
f.write("\n") def getfile():
file = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), 'testfile')
filelist = []
for file in os.listdir(file):
filelist.append(file)
if "__init__.py" in filelist:
filelist.remove("__init__.py")
return filelist def delfile():
basefile = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), 'testfile')
for file in os.listdir(basefile):
abspath = os.path.join(basefile,file)
os.remove(abspath)
5、test_case目录:这里是我的核心的测试代码

6、pytest的知识点1:给案例打标签

在真正的实战中,这里主要是区分案例执行的优先级
7、pytest知识点2:断言

在真正的实战中,断言是必不可缺少的,没有断言的测试案例不是一个真正的测试案例,是没有灵魂的
7、pytest知识点3:函数的前置条件和后置条件
def setup(self):
print("测试文件1:添加资产::函数级别::前置条件") def teardown(self):
print("测试文件1:添加资产::函数级别::后置条件")
这个只对当前的测试文件生效,setup是执行测试函数前执行,teardown在执行测试函数后执行
8、pytest知识点4:类的前置条件和后置条件
def setup_class(self):
print("测试文件1:添加资产::类::前置条件") def teardown_class(self):
print("测试文件1:添加资产::类::后置条件")
这个只对当前的测试文件生效,setup_class是执行这个类前执行,tear_down是执行类后执行
9、pytest知识点5:序列化参数
@pytest.mark.level2
@pytest.mark.parametrize("filename", ["cui1", "cui2", "cui3", "cui4"])
def test_add_asset_002(self,filename):
time.sleep(2)
flag = False
basefunc.addfile(filename)
for i in basefunc.getfile():
if filename in i:
flag = True
l_obj.log().info("给{filename}文件中添加文件成功".format(filename = filename))
if not flag:
l_obj.log().error("给{filename}文件中添加文件失败".format(filename = filename)) filelist = basefunc.getfile()
assert len(filelist) == 1
这里通过@pytest.mark.parametrize去传参数给测试函数,这里传了4个参数,相当于是4个测试案例
三、jenkins结合pytest框架执行测试案例
1、设置执行周期

2、设置执行任务入口

3、查看jenkins配置生效

四、jenkins的邮件配置
1、需要安装一个插件:Email Extension Plugin

2、jenkins全局配置

这里要配置Jenkins的发件人的邮箱地址

这里的密码可不是登陆的密码,而是是在这里,大家千万要注意

3、项目内配置,大家主要圈红的地方


五、测试
1、点击build now

2、查看控制台输出日志

3、检查已经收到具体的邮件

pytest测试框架+jenkins结合pytest+jenkins邮件通知配置的更多相关文章
- 『德不孤』Pytest框架 — 1、Pytest测试框架介绍
目录 1.什么是单元测试框架 2.单元测试框架主要做什么 3.单元测试框架和自动化测试框架有什么关系 4.Pytest测试框架说明 5.Pytest框架和Unittest框架区别 (1)Unittes ...
- pytest测试框架 -- 简介
一.pytest测试框架简介: (1)pytest是python的第三方测试框架,是基于unittest的扩展框架,比unittest更简洁,更高效. (2)pytest框架可以兼容unittest用 ...
- Pytest测试框架(五):pytest + allure生成测试报告
Allure 是一款轻量级.支持多语言的开源自动化测试报告生成框架,由Java语言开发,可以集成到 Jenkins. pytest 测试框架支持Allure 报告生成. pytest也可以生成juni ...
- Pytest测试框架(一):pytest安装及用例执行
PyTest是基于Python的开源测试框架,语法简单易用,有大量的插件,功能非常多.自动检测测试用例,支持参数化,跳过特定用例,失败重试等功能. 安装 pip install -U pytest ...
- Pytest测试框架(二):pytest 的setup/teardown方法
PyTest支持xUnit style 结构, setup() 和 teardown() 方法用于初始化和清理测试环境,可以保证测试用例的独立性.pytest的setup/teardown方法包括:模 ...
- Pytest测试框架(三):pytest fixture 用法
xUnit style 结构的 fixture用于初始化测试函数, pytest fixture是对传统的 xUnit 架构的setup/teardown功能的改进.pytest fixture为测试 ...
- Jenkins系列之四——设置邮件通知
Jenkins持续集成,当我们自动打包部署完,我们可以发送一封邮件给相关的负责人.现介绍一下如何在Jenkins中配置实现邮件通知. 在Jenkins中配置实现邮件通知,Jenkins提供了两种方式的 ...
- 高可用服务之Keepalived邮件通知配置
上一篇博客我们了解了keepalived的架构以及安装.VIP的配置和高可用相关配置,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13634755.html: ...
- paip.数据库发邮件通知配置
paip.数据库发邮件通知配置 作者Attilax , EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csdn.net/attilax ...
随机推荐
- C语言基础二维数组
(1)二位数组的定义int array[n][m],行下标的取值范围是0~n-1,列下标的取值范围是0~m-1,二维数组最大下标元素是array[n-1][m-1]:如定义一个3行4列的数组 int ...
- python之hashlib、suprocess模块
一.hashlib模块 1.什么叫hash:hash是一种算法(3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法 ...
- 10分钟搞定让你困惑的 Jenkins 环境变量
前言 Jenkins, DevOps 技术栈的核心之一,CI/CD 离不开编写 Pipeline 脚本,上手 Jenkins ,简单查一下文档,你就应该不会被 agent,stages,step 这类 ...
- yolov5实战之皮卡丘检测
前言 从接触深度学习开始一直都做的是人脸识别,基本上也一直都在用mxnet. 记得之前在刚接触的时候看到博客中写到,深度学习分三个层次,第一个层次是分类,第二个层次是检测,第三个层次是分割.人脸识别算 ...
- React & Vue2 Butterfly图编排——让数据更自由地驱动DAG
一.简介 Butterfly是由阿里云-数字产业产研部孵化出来的的图编辑器引擎,由咱们部门以及其他开发者共同维护开发,具有使用自由.定制性高的优势,已支持集团内外上百张画布,不夸张的说,我觉得可以算的 ...
- MySQL常用的一些(就几个)聚合函数
聚合函数 (常用) 函数名称 描述 CONUT() 记数 SUM() 求和 AVG() 平均值 MAX() 最大值 MIN() 最小值 -- ================= 聚合函数 ====== ...
- IDEA 常用的一些 (就几个) 快捷键
快捷键 说明 Ctrl + P 提示类参数 Ctrl + Q 提示类的属性和方法包名 Ctrl + D 复制一行到下一行 Ctrl + F 查找 Ctrl + R 替换 Ctrl + Z 撤销 Ctr ...
- 计算起始车站车费问题-JavaScript数组对象写法
计算起始站车费 题目:深圳--60--广州--50-虎门--40- -中山--36-珠海一34-澳门一89一香港以上车票费用计算,如坐车深圳到广州60元,广州到虎门50元,深圳到虎门就是60+50-1 ...
- Log4j日志记录
1.导入log4j的jar包 2.写log4j.properties文件,配置日志记录参数,一般参数如下所示: 第二行指定了输出日志的目录,此处用的相对路径,也可换成绝对路径: 第三行指定了输出的记录 ...
- 攻防世界 - Web(三)
PHP2: 1.进入页面,进行抓包或后台扫描都没有什么发现,然后网上查一波wp,发现是关于.phps文件,进入index.phps,弹出一段代码,查看源代码, <?php if("ad ...