Pytest测试框架

Pytest背景与优势

1. pytest能够支持简单的单元测试和复杂的功能测试;
2. pytest可以结合Requests实现接口测试;结合Selenium、Appium实现自动化功能测试;
3. 使用pytest结合Allure集成到Jenkins中可以实现持续集成;
4. pytest支持315种以上的插件,拥有丰富的第三方插件,而且支持定制化插件开发;
5. pytest兼容unittest。

Pytest安装

方法一:pip install pytest或者pip install -U pytest
image
方法二:Pycharm直接安装


Pytest命名规则

注意:测试类中不可以添加__init__构造函数

类型 规则
文件 test_开头 或者 _test 结尾
Test 开头
方法/函数 test_开头

Pytest用例结构

由三部分构成:用例名称、用例步骤、用例断言

测试用例示例

def test_XXX(self):
    # 测试步骤1
    # 测试步骤2
    # 断言  实际结果 对比 预期结果
    assert ActualResult == ExpectedResult

类级别的用例示例

class TestXXX:
    def setup(self):
        # 资源准备
        pass

    def teardown(self):
        # 资源销毁
        pass

    def test_XXX(self):
        # 测试步骤1
        # 测试步骤2
        # 断言  实际结果 对比 预期结果
        assert ActualResult == ExpectedResult

Pytest测试用例断言

定义

断言(assert):是一种在程序中的一阶逻辑(如:一个结果为真或假的逻辑式判断),目的是表示与验证软件开发者预期的结果。
当程序执行到断言的位置时,对应的断言应该为真。
若断言不为真时,程序会自动终止,并给出错误提示。

用法

assert <表达式 >
assert <表达式 >,<描述>

Pytest测试框架结构(setup/teardown)

测试装置介绍

类型 规则
setup_module/teardown_module 全局模块级
setup_class/teardown_class 类级,只在类中前后运行一次
setup_function/teardown_function 函数级,在类外
setup_method/teardown_method 方法级,类中的每个方法执行前后
setup/teardown 在类中,运行在调用方法的前后(重点)