pytest——python单元测试框架

170 阅读2分钟

pytest是一个python的单元测试框架,使用率比unittest高一些

单元测试框架做什么?

  • 测试发现:从多个文件里找到测试用例
  • 测试执行:按照规定顺序和规则执行,并生成结果
  • 测试判断:通过断言,判断预期结果和实际结果
  • 测试报告:统计测试进度、耗时、通过率,生成测试报告

单元测试框架和自动化测试框架有什么关系

  • 什么是自动化测试框架?
    • 封装自动化基础、管理、统计模块
  • 自动化测试框架的作用
    • 提高测试效率,降低维护成本
    • 减少人工干预,提高测试准确性,增加代码重用性
    • 核心思想:让不懂代码的人也能通过这个框架实现自动化测试
  • Pytest单元测试框架,和自动化测试框架的关系
    • 单测框架是自动化框架的组成部分
    • pom设计模式:自动化框架组成部分之一
    • 数据驱动、关键字驱动
    • 全局配置文件封装
    • selenium(一个ui)requests二次封装
    • 断言
    • 邮件报告

Pytest简介

  1. 成熟的python单元测试框架,比unittest更灵活和易上手
  2. 和selenium、requests、appium结合实现web自动化、接口自动化、app自动化
  3. 实现测试用例跳过、失败重试
  4. 和allure生成非常美观的测试报告
  5. 和jenkins持续集成
  6. 很多强大插件(强大的生态支持),能够实现很多实用操作,例如:
    • pytest-html 生成html测试报告
    • pytest-xdist 测试用例分布式执行、多cpu并发
    • pytest-ordering 改变测试用例执行顺序
    • pytest-rerunfailures 失败重试
    • allure-pytest 用于生成美观的测试报告

通过添加requirements.txt文件,可以批量安裝

pytest
pytest-html
pytest-xdist
pytest-ordering
pytest-rerunfailures
allure-pytest

Tips:一些关于conda和virtualenv的题外话

  • conda具有大型python开发环境管理功能,可以在本地管理多个python环境
  • virtualenv以项目为单位管理环境,在每个项目内创建python环境(类似于go语言vendor模式的包管理) 对于公司生产环境的开发,非常建议使用virtualenv,这样的好处在于:
  1. conda和pip的源不一样,virtualenv使用的源可以直接在生产环境中复用,而conda的不可以
  2. conda在linux上使用没有windows直观,有较高学习成本

(对于个人开发者,通常建议使用conda)