pytest是什么
pytest是python的一款测试框架,拥有unittest的功能并比它更丰富。
allure是什么
有非常多的优秀的测试框架,但却是有非常少优秀的报告工具可以展示非常清楚的用例执行过程和结果。
allure是一款开源的,专门用来展示测试结果的工具,目的是希望团队内部每一个人都可以看到非常清楚的测试结果。
allure可以与非常多的著名测试框架做集成。
像java语言,可以与junit4,junit5,TestNG测试框架集成。
python语言,可以与pytest,behave,nose测试框架集成。
allure会将测试用例的执行数据保存到xml文件当中,再利用allure的命令行将文件转换成html形式呈现出来。
allure的官方地址:http://allure.qatools.ru/
安装allure命令行
官网提供了每个平台的,命令行安装方式。
以下是手动安装方式,适用于各平台:
1、从Maven Center下载最新的安装包:
http://repo.maven.apache.org/maven2/io/qameta/allure/allure-commandline/
从百度网盘下载:(链接:https://pan.baidu.com/s/1jCSz9RHSF8eq5d7AYCgo8g&shfl=sharepset
提取码:ffcl
复制这段内容后打开百度网盘手机App,操作更方便哦)
目前是2.13.0的版本。
2、将包解压到任何一个目录。建议不要选C盘或者路径很深的。比如D:\allure-command-2.12.1
3、跳转到解压后的bin目录下面,windows下执行allure.bat。其它平台执行allure.
4、配置allure的环境变量:
5、检查是否安装成功 allure --version
allure与pytest的集成
在allure安装完成之后,需要与pytest集成,能够在pytest运行完成之后,生成allure的文件 。
1、安装pytest的allure支撑插件。
pip命令行:pip install allure-pytest
2、在执行pytest命令时,添加allure命令参数:—alluredir=Outputs/allure (相对于pytest命令所在目录的测试报告目录)
if __name__ == '__main__':
pytest.main(["-s", "-v", r"--alluredir=Outputs/allure_reports"])
- pytest生成其他报告的命令html xml log格式
安装 pytest-html插件
CMD命令:pip install -i https://pypi.douban.com/simple pytest-html
1、JunitXML
命令 --junitxml=path
2、result log
命令:--resultlog=report\log.txt
3、Html
命令:--html=report\test_one_func.html(相对路径) 绝对路径不行
- 生成 pytest-hmtl报告和allure报告文件 封装了1个函数方便调用
def pytestmain(file_path, report_type="html", mark="", tag_name="", report_type1=("html", "resultlog", "junitxml")):
"""
:param file_path:报告的相对路径
:param report_type:要输出的报告类型 html resultlog junitxml
:param report_type1:要输出的报告类型 html resultlog junitxml 给type类型做参考的值
:param tag_name:打标记的标签名 或者用例关键字名
:param mark: -m 或者 -k
:return:
"""
if os.path.splitext(file_path)[1][1:] in report_type:
pytest.main(["--reruns", "2", "--reruns-delay", "5", r"--{}={}".format(report_type, file_path),
r"--alluredir=Outputs\allure_reports", mark, tag_name, "-s", "-v"])
else:
do_log.error("你的文件相对路径文件和你的报告输出格式不一致【{}】==【{}】".
format(os.path.splitext(file_path)[1][1:], report_type))
3、等待pytest执行完所有的测试用例,在Outputs/allure_reports下会生成一些文件。
在cmd命令行当中,执行:allure serve 测试结果文件目录,就会生成漂亮的html报告。
4、生成html格式的allure报告
命令:allure generate 测试结果文件目录 -o 输入html文件的目录 --clean
--clean表示每次执行该命令行都先清除输入html文件的目录下的文件
allure generate OutPuts/allure_reports -o OutPuts/allure_html --clean
allure与jenkins的集成
allure与jenkins集成之后,可以直接在jenkins上,直接查看到上图的allure结果。
并因为jenkins的构建记录都存在,所以可以看到历史构建曲线图,用例数的变化、通过率的变化、耗时的变化等均可查看到。
集成步骤如下:
1、在jenkins上安装allure插件。
Step1: 去jenkins插件网站上下载allure插件最新版本:
http://mirrors.jenkins-ci.org/plugins/allure-jenkins-plugin/
- 百度网盘下载
链接:https://pan.baidu.com/s/10dDqlCaT10dUf1Vkb079rw
提取码:8mbf
复制这段内容后打开百度网盘手机App,操作更方便哦
Step2: 打开jenkins,在系统管理 —> 插件管理 —>Advanced —> Upload Plugin
上传.phi格式的插件,点击[上传]操作。
- 安装插件成功之后 重启下jenkins服务
2、在jenkins 全局工具当中配置allure命令行。
在 系统管理 —> 全局工具配置 —> 当中做以下配置(allure和jdk),配置完并保存:
点击 Global 进入全局工具配置
以上基本配置好了,我们接下来要创建项目了
创建项目配置
-
创建一个项目 选择 自由模式
2.因为是在本地配置 所以选无
-
构建 因为在本地所以选择windows
-
这里需要注意下 :我们需要在D:\software\jenkins\workspace目录下创建一个和我们job项目名相同的文件件并且把项目代码复制进去
-
用python解释器的目录 去执行会稳定的多,不知道解释器目录 CMD 输入 where python
4.构建后设置
- 选择 allure report
-
如果不想把代码复制到workspace创建的job项目里面,也可以自定义 但是需要job名跟执行的项目文件名一致。
2)如果是放在git或者svn上面的代码,那么你就不需要指定工作空间
jenkins 踩坑
selenium.common.exceptions.WebDriverException: Message: unknown error: cannot find Chrome binary
这个错误是说明,在Jenkins上执行用例时,没找到浏览器所以在我们代码中添加(浏览器的绝对安装路径)
解决办法
1.找到chrome的安装位置,并且将chromedriver.exe浏览器驱动也放到这个位置
- 修改代码
-
先在constants文件家一个chromedriver的绝对路径,这里有点不好 一旦换电脑这里就得改
-
在conftest.py文件给实例化驱动器传上上面那个参数即可,conftest.py是处理前置 后置
-
点击 build Now 立即构建
点击 allure Report 就可以看报告了
生成报告然后发送邮箱
1.安装插件
系统管理-插件管理-安装Email Extension插件
2.配置发送邮件信息
-
系统管理-系统设置-Jenkins Location,这里的管理员地址要和发送人的邮箱地址一样,要不然会有问题
-
系统管理-系统设置-Extended E-mail Notification
邮件标题:
【构建通知】:$PROJECT_NAME - 构建结果:$BUILD_STATUS-构建次数-${BUILD_NUMBER}
html代码
<!DOCTYPE html>
<html lang="en">
<body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4" offset="0">
<table width="95%" cellpadding="0" cellspacing="0" style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">
<tr>
本邮件由系统自动发出,无需回复!<br/>
各位同事,大家好,以下为${PROJECT_NAME }项目构建信息</br>
<h1><center><font color="red">allure报告在线查看or下载allure-report.zip用firefox离线查看,测试用例见附件</font><center></h1>
</tr>
<tr>
<td><br/>
<b><font color="#0B610B">项目描述:${JOB_DESCRIPTION}<br></font></b>
<hr size="2" width="100%" align="center" /></td>
</tr>
<tr>
<td>
<ul>
<li>项目名称 : ${PROJECT_NAME}</li>
<li>构建编号 : 第${BUILD_NUMBER}次构建</li>
<li>SVN 版本: ${SVN_REVISION}</li>
<li>触发原因: ${CAUSE}</li>
<li>构建状态: ${BUILD_STATUS}</li>
<li>构建日志: <a href="${BUILD_URL}console">${BUILD_URL}console</a></li>
<li>构建 Url : <a href="${BUILD_URL}">${BUILD_URL}</a></li>
<li>工作目录 : <a href="${PROJECT_URL}ws">${PROJECT_URL}ws</a></li>
<li>项目 Url : <a href="${PROJECT_URL}">${PROJECT_URL}</a></li>
<li>系统allure测试报告:<a HREF="${PROJECT_URL}${BUILD_NUMBER}/allure">${PROJECT_URL}${BUILD_NUMBER}/allure</a><li>
</ul>
</td>
<tr>
<td>
<b><font color="#0B610B">构建日志 (最后 100行):</font></b>
<hr size="2" width="100%" align="center" />
</td>
</tr>
<tr>
<td>
<textarea cols="80" rows="30" readonly="readonly" style="font-family: Courier New">${BUILD_LOG, maxLines=100}</textarea>
</td>
</tr>
${JELLY_SCRIPT}
</table>
</body>
</html>
项目 构建后操作修改
-- 修改一下构建命令 执行main.py文件 再让他生成一个html报告作为附件发送出去