Skip to content

第44讲:接口测试持续集成

本课时我们开始进入接口测试持续集成的学习。

前面,我们用企业微信写了一个简单的接口测试用例 。进入项目设置,在 test_http 目录下面可以看到两个测试用例文件,一个是 test_http.py ,这是我们最早写的一个简单测试用例,用于验证requests框架的;另一个是 test_wework.py 文件,测试企业微信的,今天我们把这部分接口测试用例纳入持续集成体系。

技术配置

首先,持续集成一般是在服务器上来运行的,所以,要运行这两个测试用例,即将它们加入持续集成,就要先复制到异地的环境中,或者其他机器的环境里,此时就需要将依赖打包过去。按照以下两个步骤就可以打包依赖:

  1. 在项目里使用 pip freeze 命令,freeze 可以把依赖冻结,并输出存到一个叫 requirement.txt的特定文件中,就是依赖清单。当然,这个文件可以按照自己的想法随意命名。
  2. 通过 git 命令把依赖清单文件加到 git 里面去。通过 git add 、git commit、git push 把它传到服务器上。
html
pip freeze > requirements.txt
git add requirements.txt 
git commit-m 'add requirements.txt'
git push

打包完依赖以后,到了部署的环境只需要以下命令便可以还原依赖,如下所示:

html
pip install -r requirements.txt

我们来看看 requirement .txt 文件,打开以后可以看到,这个文件记录了我们所需的所有依赖的第三方安装包,以及对应的版本,有了这个清单,我们就可以通过上述命令重新安装所需依赖。如下图所示:

接下来,我们需要提前在测试环境里重新安装整个 Python 的虚拟环境。首先,创建一个虚拟环境的目录,该目录可随意命名,在演示中我选择了 venv,在这个流程里面,可以这样来写代码:

html
#解决环境初始化问题,如果没有 venv 环境,创建并安装依赖
[ -d tutorial-env ] || python -m venv tutorial-env
#加载 venv 环境
source tutorial-env/bin/active
#更新依赖
pip install -r requirements.txt
#运行接口测试,并主动生成 junit 测试结果和 allure2 的报告
python -m pytest --junitxml=junit.xml --alluredir==allure_results/ test_web

代码中首先判断目录是否存在,tutorial-env 是目录名,可以随意命名。如果这个目录不存在,使用 python -m venv 创建一个叫 venv 的目录,该目录下面有一个 active 文件,使用 source 命令,加载虚拟环境,从而进入虚拟环境。

下载完成之后再使用 pip install -r 参数把所有的依赖重新安装,这时通常也会更新一些依赖,等待更新完成之后,就可以执行测试用例了。

接着使用 python -m pytest 或者直接输入 pytest 来运行。这里第一个参数 --junitxml , 可以生成 junit.xml 的结果文件;第二个参数 --alluredir ,它可以生成 allure 的测试报告。最后指定接口测试的目录为 test_web ,在这个目录下存放了 web 自动化测试用例。

我们执行后带来一个结果就如下图所示:

在 JenKins 节点上 Job Build 过程中执行 Execute shell 的时候,我们把上述流程加进去,在构建的时候它就会自动执行。

结果分析

在上述过程中,我们通过两个参数分别生成了 junit 的测试结果和 allure 的测试结果。我们该如何进行结果分析呢?

junit.xml 文件

我们可以将 junit.xml 测试报告添加到 Post Build 过程中,填入 junit.xml 文件路径,JenKins 就会帮我们自动分析测试结果,如下图所示:

allure 文件

对于 post build allure2 的结果,我们需要使用独立的 Allure Report 插件,安装之后,在 post build 的过程中添加 allure report 配置,之后填入 allure_results 文件路径,如下图所示:

等所有的结果运行完成之后,就会生成这一个清晰的数据报表,如下图所示:

项目配置

接下来,我们看一下真实的项目是如何配置的。首先,是技术的配置,这里我们固定了工作节点,如下图所示:

然后,原代码的技术配置,如下图所示:

接下来是构建的流程,这里,既可以选择周期性部署,也可以选在代码更新后自动部署。我设置的是当代码有更新时,每隔5分钟检测一次,如果没有代码更新,也会每隔10分钟构建一次,如下图所示:

在 Build 里面,就是执行我们前面讲到的相关命令,如图所示:

接下来在 Post-build 里面,我们填 allure_results 和 junit.xml 的测试结果。

了解了这些配置之后,我们来运行一下测试用例,会生成相关的分析报告,如下图所示。

最终我们会得到详细的分析结果,如下图所示,在 categories 里面会罗列存在的 bug:

在 suits 中会展示现有的 case:

在 graphs 中是所有测试结果图标展示:

在 timeline 中是 case 分类执行的情况:

在behaviors 中是每个 case 的执行情况:

在 packages 中会根据包罗列 case:

最后是测试结果的列表,展示了所有的测试结果,这里跟 allure 很像,如下图所示:

通过上述流程,我们就完成了接口测试持续集成的学习。