持续集成体系
搭建jenkins
#创建docker的文件影射卷
docker volume create jenkins-hogwarts
#创建实例
docker run -d --name jenkins-hogwarts \
-p 8080:8080 -p 50000:50000 \
-v jenkins-hogwarts:/var/jenkins_home \
jenkins/jenkins:lts
#获得初始管理密码
docker exec jenkins-hogwarts cat /var/jenkins_home/secrets/initialAdminPassword
allure集成
- 安装allure report插件
- 配置allure commandline
添加node节点
把执行测试用例的服务器配置为node节点
源代码配置
开发环境下的依赖管理
https://github.com/ceshiren/LagouTesting/blob/master/requirements.txt
pip freeze > requirements.txt
git add requirements.txt
git commit -m 'add requirements.txt'
git push
#在部署/测试环境中安装依赖列表:pip install -r requirements.txt
在测试环境安装依赖
关键的参数
- k参数 可以过滤测试用例
- 目录/文件参数
- 结果输出参数
#解决环境初始化问题,如果没有venv环境,就创建并安装依赖
[ -d tutorial-env ] || python -m venv tutorial-env
#加载venv环境
source tutorial-env/bin/activate
#更新依赖
pip install -r requirements.txt
#运行接口测试,并生成junit测试结果和allure2的报告
python -m pytest --junitxml=junit.xml --alluredir=allure_results/ test_web
pytest运行
#运行接口测试,并生成junit测试结果和allure2的报告
python -m pytest \
--junitxml=junit.xml \
--alluredir=allure_results/ \
test_web
构建后的报告生成
- junit publish junit test result report
- allure report
allure2在测试用例中的使用例子
截图放到allure的报告中
self.driver.save_screenshot("/tmp/1.png")
allure.attach.file('/tmp/1.png', attachment_type=allure.attachment_type.PNG)
self.driver.find_element(By.CSS_SELECTOR, 'button.search-cta').click()
self.driver.save_screenshot("/tmp/2.png")
allure.attach.file('/tmp/2.png', attachment_type=allure.attachment_type.PNG)
allure2的报告示例
架构
- jenkins server:8080 管理job与通用配置的服务
- node:分布式架构,每个人都可以注册自己的节点进来,让jenkins server进行调度
- job:job会运行在node上,所以测试代码都是在分布式的node节点上运行的。