蟑螂恶霸的博客 蟑螂恶霸的博客
首页
  • Web自动化
  • 自动化测试框架
  • 接口自动化
  • 测试面试题
  • 技术文档
  • GitHub技巧
  • 博客搭建
  • Vue
  • JavaScript
  • Nginx
  • 自动化测试
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

蟑螂恶霸

一个爱折腾的程序员,什么都想试试!
首页
  • Web自动化
  • 自动化测试框架
  • 接口自动化
  • 测试面试题
  • 技术文档
  • GitHub技巧
  • 博客搭建
  • Vue
  • JavaScript
  • Nginx
  • 自动化测试
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • web自动化

  • 自动化测试框架

  • 接口自动化测试

  • 测试面试题

  • Pytest

    • 快速入门和基础讲解
      • 前言
      • 为什么要用Pytest
        • pytest 的官方网站介绍,它具有如下特点:
      • 安装Pytest
        • cmd运行
        • 查看版本
      • 快速开始
        • 知识点
      • Pytest用例的设计原则
      • Pytest执行用例规则
        • 1、某个目录下所有的用例
        • 2、执行某一个 py 文件下用例
        • 3、运行start.py 模块里面的某个函数,或者某个类,某个类里面的方法
        • 4、运行start.py 模块里面,测试类里面的某个方法
        • 5、-m 标记表达式(后续讲解)
        • 6、-q 简单打印,只打印测试用例的执行结果
        • 7、-s 详细打印
        • 8、-x 遇到错误时停止测试
        • 9、—maxfail=num,当用例错误个数达到指定数量时,停止测试
        • 10、-k 匹配用例名称
        • 11、-k 根据用例名称排除某些用例
        • 12、-k 同时匹配不同的用例名称
      • Pycharm运行Pytest
        • 注意
    • assert断言详细使用
    • setup和teardown的详细使用
    • fixture的详细使用
    • 测试用例执行后的几种状态
    • conftest.py的详细讲解
    • skip、skipif跳过用例
    • 使用自定义标记mark
    • 参数化@pytest.mark.parametrize
    • fixture 传参数 request的详细使用
    • 失败重跑插件pytest-rerunfailures的详细使用
    • 测试结果生成HTML报告插件之pytest-html的详细使用
    • 重复执行用例插件之pytest-repeat的详细使用
    • 配置文件pytest.ini的详细使用
    • 多重校验插件之pytest-assume的详细使用
    • 分布式测试插件之pytest-xdist的详细使用
    • pytest-xdist分布式测试的原理和流程
    • 超美测试报告插件之allure-pytest的基础使用
    • 我们需要掌握的allure特性
    • allure的特性,@allure.step()、allure.attach的详细使用
    • allure的特性,@allure.description()、@allure.title()的详细使用
    • allure的特性,@allure.link()、@allure.issue()、@allure.testcase()的详细使用
    • allure 打标记之 @allure.epic()、@allure.feature()、@allure.story() 的详细使用
    • allure 环境准备
    • allure.severity 标记用例级别
    • 清空 allure 历史报告记录
    • allure 命令行参数
    • 参数化 parametrize + @allure.title() 动态生成标题
    • 详解 allure.dynamic 动态生成功能
    • 使用 pytest-xdist 分布式插件,如何保证 scope=session 的 fixture 在多进程运行情况下仍然能只运行一次
  • 自动化测试
  • Pytest
蟑螂恶霸
2022-07-22
目录

快速入门和基础讲解

# 前言

  • 目前有两种纯测试的测试框架,pytest和unittest
  • unittest应该是广为人知,而且也是老框架了,很多人都用来做自动化,无论是UI还是接口
  • pytest是基于unittest开发的另一款更高级更好用的单元测试框架
  • 出去面试也好,跟别人说起来也好,pytest的逼格明显高于unittest

# 为什么要用Pytest

# pytest 的官方网站介绍,它具有如下特点:

  1. 非常容易上手,入门简单,文档丰富,文档中有很多实例可以参考
  2. 能够支持简单的单元测试和复杂的功能测试
  3. 支持参数化
  4. 执行测试过程中可以将某些测试跳过(skip),或者对某些预期失败的case标记成失败
  5. 支持重复执行(rerun)失败的 case
  6. 支持运行由 nose, unittest 编写的测试 case
  7. 可生成 html 报告
  8. 方便的和持续集成工具 jenkins 集成
  9. 可支持执行部分用例
  10. 具有很多第三方插件,并且可以自定义扩展

# 安装Pytest

# cmd运行

pip install -U pytest

pip3 install pytest -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
1
2
3

# 查看版本

pytest --version
1

# 快速开始


def func(x):
    return x + 1

def test_answer():
    assert func(3) == 5

class TestClass:
    def test_one(self):
        x = "this"
        assert "h" in x

    def test_two(self):
        x = "hello"
        assert hasattr(x, "check")
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

然后,cmd进入当前文件目录,直接执行

pytest
1

# 知识点

  • 如果只执行 pytest ,会查找当前目录及其子目录下以  test_*.py  或 *_test.py 文件,找到文件后,在文件中找到以  test 开头函数并执行
  • 如果只想执行某个文件,可以 pytest start.py
  • 加上-q,就是显示简单的结果: pytest -q start.py

# Pytest用例的设计原则

用Pytest写用例时候,一定要按照下面的规则去写,否则不符合规则的测试用例是不会执行的

  • 文件名以 test_.py 文件和_test.py
  • 以  test_ 开头的函数
  • 以  Test 开头的类,不能包含 init 方法
  • 以  test_ 开头的类里面的方法
  • 所有的包 package 必须要有__init__.py 文件

# Pytest执行用例规则

注意,下面讲的都是在cmd中执行pytest命令

# 1、某个目录下所有的用例

pytest
1

# 2、执行某一个 py 文件下用例

pytest 脚本名称.py
1

# 3、运行start.py 模块里面的某个函数,或者某个类,某个类里面的方法

加v和不加-v都可以,加-v的话,打印的信息更详细

pytest -v 08_mark.py::TestClass::test_method

pytest 08_mark.py::TestClass::test_method

pytest start.py::test_answer
1
2
3
4
5

# 4、运行start.py 模块里面,测试类里面的某个方法

pytest start.py::TestClass::test_two
1

# 5、-m 标记表达式(后续讲解)

 pytest -m login
1

将运行用 @pytest.mark.login 装饰器修饰的所有测试,后面再展开讲标记哦

# 6、-q 简单打印,只打印测试用例的执行结果

 pytest -q start.py
1

# 7、-s 详细打印

 pytest -s start.py
1

# 8、-x 遇到错误时停止测试

pytest start.py -x
1

# 9、—maxfail=num,当用例错误个数达到指定数量时,停止测试

pytest start.py --maxfail=1
1

# 10、-k 匹配用例名称

执行测试用例名称包含http的所有用例

pytest -s -k http start.py
1

# 11、-k 根据用例名称排除某些用例

pytest -s -k "not http" start.py
1

# 12、-k 同时匹配不同的用例名称

pytest -s -k "method or weibo" start.py
1

# Pycharm运行Pytest

平时写代码,咱们都在Pycharm写的,怎么可能一直用cmd来跑用例呢,现在我们就来看看在Pycharm中如何运行Pytest

  1. 首先,我们先要去settings里面设置单元测试框架为Pytest
  2. 如果是nosetests的话,右键运行是以python脚本运行的哦
  3. 如果设置了unittest则是以unittest框架去运行

# 注意

pytest 是可以兼容 unittest 脚本的,之前写的 unittest 用例也能用 pytest 框架去运行

本文转自 https://www.cnblogs.com/poloyy/p/12641505.html (opens new window),如有侵权,请联系删除。

上次更新: 2022/10/15, 15:19:25
某培训机构面试题
assert断言详细使用

← 某培训机构面试题 assert断言详细使用→

最近更新
01
实现定时任务数据库配置
06-09
02
SQL Server连接
02-22
03
RSA加密工具类
02-22
更多文章>
Theme by Vdoing | Copyright © 2022-2023 蟑螂恶霸 | Blog
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式