pytest基础

一、pytest默认的用例规范
  1. 用例文件:以test开头
  2. 类名称:以Test开头的类会被当成测试用例类
  3. 方法名称:以test开头的方法会被当成测试用例方法
二、用例的前后置方法
  1. 方式一:
# 用例级别:setup、teardown
# 类级别:setup_class、teardown_class
class TestRegister:
    def setup(self):
        print("setup:每个用例开始前都会执行" + '11')

    def teardown(self):
        print("teardown:每个用例结束后都会执行" + '222')

    def setup_class(self):
        print('这是类的前置方法')

    def teardown_class(self):
        print('这是类的后置方法')

    def test_register(self):
        assert 100 == 100

    def test_register01(self):
        assert 66 == 55
  1. 方式二:
# 通过pytest.fixture
# 定义用例级别的前后置
@pytest.fixture(scope='function')
def setup_case():
    print('这是用例的前置方法')

    yield

    print('这是用例的后置方法')

# 定义类级别的前后置
@pytest.fixture(scope='class')
def setupclass_case():
    print('这是类的前置方法')

    yield

    print('这是类的后置方法')

调用:

# 1、在用例方法的参数中,写上前后置的方法名
class TestRegister01:
    def test_register(self, setup_case, setupclass_case):
        assert 100 == 99

    def test_register01(self, setup_case):
        assert 66 == 66
# 2、在定义前后置方法的时候(设置参数:autouse=Ture),可以设置为自动执行(用的较少)
三、用例执行的顺行
  1. 同一文件中的用例:按照用例的顺序执行
  2. 不同文件的执行顺行:按照文件的ascii码来执行
四、用例打标签
  1. 在pytest.ini文件中使用markets这个配置项注册标签
  2. 给用例加标签
class TestDemo:
	# 1、通过pytestmark = [pytest.mark.max]给测试类中的所有测试方法打上该标签
	# 2、通过@pytest.mark.标签名给测试用例方法打标签
	pytestmark = [pytest.mark.zm]
    @pytest.mark.max
    @pytest.mark.min
    def testlogin00(self):
        assert 100 == 100

    @pytest.mark.max
    def testlogin01(self):
        assert 100 == 100
  1. 通过标签选择用例执行
# 命令行执行被标签max标记的测试用例
python -m max
# 运行run文件
python.main(['-m', 'max'])
# 筛选多个标签
python -m not 'max'
python -m 'max' and 'min'
python -m 'max' or 'min'
  1. 内置的标签
class TestDemo:
    num = 100
    # 被skip标签标记的用例不会被执行
    @pytest.mark.skip
    def testlogin00(self):
        assert 100 == 100
    # skipif中的判断条件成立,则被skipif标签标记的用例不会被执行。注意:reason参数必须要有,不然会报错
    @pytest.mark.skipif(num == 100, reason='num不等于100')
    def testlogin04(self):
        assert 100 == 100
五、用例运行的方式
  1. 运行方式
命令行:pytest 参数
pytest.main运行:pytest.main([参数列表])
  1. 通过标签筛选用例执行
命令行:pytest -m 标签名
pytest.main运行:pytest.main(['-m', '标签名'])
  1. 筛选执行的用例
# 1、执行指定用例文件 pytest 文件名.py
# 2、执行指定用例目录 pytest 目录名
# 3、执行指定用例类 pytest 文件名.py::类名
# 4、执行指定用例方法 pytest 文件名.py::类名::方法名
六、断言

使用assert进行断言

七、参数化(等同于unittest中的ddt)
# 用例方法添加@pytest.mark.parametrize('item', cases)
class TestLogin:
    cases = [0, 7 , 1, 4, 5]
    @pytest.mark.parametrize('item', cases)
    def testlogin(self, item):
        print(item)
八、测试报告(集成allure报告平台)
  1. 下载allure 进行解压
  2. 将解压后的allure中的bin目录路径配知道环境变量
  3. 安装allure-pytest插件
  4. 执行用例时加上参数 --alluredir=报告数据存放的目录
  5. 在命令行启动allure服务,获取报告
allure serve 报告数据的路径
九、失败重试
  1. 安装pytest-rerunfailures
  2. 命令行执行
pytest test.py --reruns 3 reruns-delay 1 --alluredir=allure_reports/
  1. 通过pytest.main执行
pytest.main(['test_reporter.py', '--reruns', '3', '--reruns-delay', '1', '--alluredir=allure_reports/'])

相关推荐

  1. Pytest基础

    2024-06-07 19:20:01       45 阅读
  2. pytest基础

    2024-06-07 19:20:01       9 阅读

最近更新

  1. 一个简单的spring+kafka生产者

    2024-06-07 19:20:01       0 阅读
  2. gradle安卓开发软件简介

    2024-06-07 19:20:01       1 阅读
  3. UE5.2 AI实时抠像(无需绿幕) + OBS推流直播 全流程

    2024-06-07 19:20:01       1 阅读
  4. 微软Edge浏览器全解析

    2024-06-07 19:20:01       1 阅读
  5. toString方法介绍

    2024-06-07 19:20:01       1 阅读
  6. LLM大语言模型知识点整理

    2024-06-07 19:20:01       1 阅读
  7. 使用Boost.Asio编写TCP通信程序框架(一)

    2024-06-07 19:20:01       1 阅读
  8. 导师好奇我为什么开发后端模版只花了一小时!

    2024-06-07 19:20:01       1 阅读

热门阅读

  1. docker安装和使用

    2024-06-07 19:20:01       8 阅读
  2. git 报错

    2024-06-07 19:20:01       8 阅读
  3. 网络通信Socket的简单案例

    2024-06-07 19:20:01       7 阅读
  4. docker搭建mongo单机单节点副本集模式

    2024-06-07 19:20:01       12 阅读
  5. 基于人工智能的网络空间内容安全治理方法研究

    2024-06-07 19:20:01       13 阅读
  6. adb 常用命令

    2024-06-07 19:20:01       12 阅读
  7. 鸿蒙emitter 订阅事件封装 EmitterUtils

    2024-06-07 19:20:01       12 阅读
  8. git常用命令

    2024-06-07 19:20:01       9 阅读
  9. 自己实现一个Feign

    2024-06-07 19:20:01       11 阅读
  10. Random —— python(And)numpy

    2024-06-07 19:20:01       9 阅读
  11. D365 子窗体调用父窗体方法

    2024-06-07 19:20:01       11 阅读
  12. PyTorch交叉熵理解

    2024-06-07 19:20:01       11 阅读