pytest学习记录

测试文件名必须以test_开头或者_test结尾,可大写也可小写
测试函数必须以test开头,严谨一致
测试类必须以Test开头,严谨一致


pytest内置函数:

.`tmp_path`(唯一临时目录)
.

查看更多内置函数:pytest --fixtures
通过pytest --trace-config命令可以查看当前pytest中所有的plugin


  1. 只想测试某些测试用例:使用-k 模糊匹配
  2. 跳过个别测试用例:@pytest.mark.skip()
  3. 捕捉异常:pytest.raises
  4. 多组数据测试:@pytest.mark.parametrize(argnames, argvalues),例:@pytest.mark.parametrize('data', [1, 2, 3])
  5. 更细跟踪固件执行:--setup-show
  6. 阻止消息被吞:-s
  7. 内置固件:request,其属性param
  8. 使用pytestconfig,可以很方便的读取命令行参数和配置文件
  9. 执行标记测试用例:pytest.mark.finishedpytest.mark.unfinished

模块级、函数级、类级、方法级

模块级别:在当前模块中的所有测试用例执行之前以及执行之后仅会执行一次(setup_module/teardown_module)

函数级别:在每个函数测试用例执行之前会执行一次(setup_function/teardown_function)

类级别:测试类中的所有测试用例执行之前仅执行一次(setup_class/teardown_class)

方法级别:测试类中的每个测试用例执行之前会执行一次(setup_method/teardown_method)


fixture的conftest.py

测试固件对象的调用方法有3种:

  1. 直接作为测试函数或者测试类中的方法参数传入,就是要写自定义固件@pytest.fixture接自定义函数,然后将自定义函数名传给测试的方法。

  2. 使用pytest.mark.usefixture装饰测试函数或者测试方法。注意:此方法的测试固件需要通过全局变量来进行传递。

  3. 直接通过测试固件自带的属性autouse完成固件的应用操作,只需要将autouse的值设置为True,测试函数和方法可以直接调用其声明的全局对象。

posted @ 2022-04-02 15:32  27岁的太阳  阅读(34)  评论(0编辑  收藏  举报