zoukankan      html  css  js  c++  java
  • Pytest学习

    pytest简介

    pytest是python的一种单元测试框架,与python自带的unittest测试框架类似,但是比unittest框架使用起来更简洁,效率更高。

    使用介绍

    编写规则

    • 测试函数以test_开头
    • 测试类以Test开头,并且不能带有 init 方法
    • 测试文件以test_开头(以_test结尾也可以)
    • 断言使用基本的assert即可

    pycharm 配置pytest

    更改工程设置默认的运行器:
    file->Setting->Tools->Python Integrated Tools->项目名称->Testing->Default test runner->选择pytest

    fixture的Scope参数

    scope参数有四种,分别是'session'、'module'、'class'、'function',默认为function。
    一个.py文件为一个module,一个session中可以有多个module,若是多个.py文件共用一个功能时,可以使用session参数。

    • session:每个session只运行一次
    • module:每个module的所有test只运行一次
    • class:每个class的所有test只运行一次
    • function:每个test都运行,Scope的默认值
    #写于conftest.py中
    @pytest.fixture(scope="session")
    def first():
        print("scope为session级别多个.py模块只运行一次")
        a = "ad"
        return a
    def test_s(first):
        assert first == "ad"
    
    @pytest.fixture(scope="module")
    def first():
        print("scope为module级别当前.py模块只运行一次")
        a = "amdin"
        return a
    def test_m(first):
        assert first == "ad"
    
    @pytest.fixture(scope="class")
    def first():
        print("scope为class级别只运行一次")
        a = "admin"
        return a
    def test_c(self,first):
        assert first == "admin"
    
    @pytest.fixture(scope="function")
    def first():
        b = "123456"
        return b
    def test_f(first):
        assert first == "654321"
    
    

    setup和teardown

    setup:在测试函数或测试类之前执行,完成准备工作,例如数据库链接、测试数据等
    teardown:在测试函数或测试类之后执行,完成收尾工作,例如断开数据库链接、回收内存资源等
    备注:也可以在fixture函数中通过yield实现setup和teardown功能

    • 模块级(setup_module/teardown_module)开始于模块始末,全局,优先级最高
    • 类级(setup_class/teardown_class)只在类中前后运行一次(在类中定义)
    • 函数级(setup_function/teardown_function)只对函数用例生效(不在类中定义)
    • 方法级(setup_method/teardown_method)开始于方法始末(在类中定义)
    def setup_module():
        print("setup_module:整个.py模块执行前执行一次")
        print("比如:所有用例开始前只打开一次浏览器")
    def teardown_module():
        print("teardown_module:整个.py模块执行后执行一次")
        print("比如:所有用例结束只最后关闭浏览器")
    
    def setup_class(self):
        print("setup_class:类中的所有用例执行前执行一次")
    def teardown_class(self):
        print("teardown_class:类中的所有用例结束后执行一次")
    
    def setup_function():
        print("setup_function:不在类中的每个用例开始前执行")
    def teardown_function():
        print("teardown_function:不在类中的每个用例结束后执行")
    
    def setup_method(self):
        print("setup_method:  类中的每个用例开始前执行")
    def teardown_method(self):
        print("teardown_method:  类中的每个用例结束后执行")
    
    
    

    assert断言

    A=11
    a='hello'
    b= 'he'
    大小断言:assert A == != <= >= 22
    包含断言:assert b in a;   assert b not in a
    是否       :assert a is True;    assert  a is not true;   assert a is false
    
    

    confest.py文件

    pytest的本地测试配置文件,可以实现数据共享,也可以用于导入外部插件。作用于所在的目录及子目录。

    注意:

    1. confest.py与运行的用例要在同一个package(可以理解为同一个文件夹)下,并且有init.py文件,用于被pytest自动识别。
    2. 名字固定

    可以用来存放 fixture文件,供多个.py文件使用

    Console参数

  • 相关阅读:
    mysql索引
    springboot mybatis 后台框架平台 shiro 权限 集成代码生成器
    java 企业网站源码模版 有前后台 springmvc SSM 生成静态化
    java springMVC SSM 操作日志 4级别联动 文件管理 头像编辑 shiro redis
    activiti工作流的web流程设计器整合视频教程 SSM和独立部署
    .Net Core中的ObjectPool
    文件操作、流相关类梳理
    .Net Core中的配置文件源码解析
    .Net Core中依赖注入服务使用总结
    消息中间件RabbitMQ(一)
  • 原文地址:https://www.cnblogs.com/qev211/p/11928499.html
Copyright © 2011-2022 走看看