学习笔记之pytest单元测试框架

  • Post author:
  • Post category:其他




一、介绍



1. pytest单元测试框架主要做什么?

  1. 测试发现:从多个文件里找到测试用例
  2. 测试执行:按照一定顺序和规则执行,并生成结果
  3. 测试判断:通过断言判断预期结果和实际结果的差异
  4. 测试报告:统计测试进度,耗时,通过率,生成测试报告
  5. 作用:

    pytest结合allure生成测试报告;

    pytest结合Jenkins实现持续集成;
  6. pytest插件:

    pytest-html生成html格式自动化测试报告;

    pytest-xdist测试用例分布式执行、多cpu分发;

    pytest-ordering改变测试用例执行顺序;

    pytest-rerunfailures用例失败后重跑



2. 默认规则

  • 模块名必须以test_开头或_test结尾

    test_login.py

  • 测试类必须以test开头,并且不能有init方法


    class TestLogin:

  • 测试函数必须以test开头


    def test_login(self):



3. pytest测试用例的运行方式

  • 主函数运行

    运行主函数,主函数含

    pytest.main()
  • 命令行方式运行

    在终端中直接执行:

    pytest



二、用法



1. pytest.main()

参考:

pytest之main函数的用法



1.1 命令行参数详情

-s: 显示程序中的print/logging输出,不输出环境信息

-v: 丰富信息模式, 输出更详细的用例执行信息

-q: 安静模式, 不输出环境信息

-x: 出现一条测试用例失败就退出测试。利于调试

-k:可以使用and、not、or等逻辑运算符,区分:匹配范围(文件名、类名、函数名)

  • 运行

    目录及子目录下

    所有用例

     pytest.main()
    
  • 运行

    指定模块

    所有用例

    pytest.main(['test_login.py'])
    
  • 运行

    指定模块指定类指定用例

    ,”::”冒号分隔开

    pytest.main(['test_login.py::class TestLogin::def test_login(self)'])
    



2. assert 断言

assert后的表达式为真,即为断言通过,用例执行通过。

assert xx 判断xx为真

assert not xx 判断xx不为真

assert a in b 判断b包含a

assert a == b 判断a等于b

assert a != b 判断a不等于b



3. 数据驱动



3.1 @pytest.mark.parametrize()用法

作用:给测试用例,输入测试数据

第一个参数:参数名,字符串,表示用例函数的参数。多个参数,以逗号分开。

第二个参数:参数值,列表,用于保存测试数据。有多组数据,可嵌套元组。

如:

@pytest.mark.parametrize(‘参数名’,list)

@pytest.mark.parametrize(‘参数名1,参数名2’,[(参数1_data[0], 参数2_data[0]),(参数1_data[1], 参数2_data[1])])



版权声明:本文为Anita99原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。