两天带你掌握pytest测试框架实战

持续集成体系

搭建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节点上运行的。
2 个赞