pytest

1、命令规则

  测试文件名必须以“test_”开头或者"_test"结尾(如:test_ab.py)

  测试方法必须以“test_”开头。

  测试类命名以"Test"开头,并且不能带有 __init__ 方法

2、常用注解

  (1)fixture

标记: @pytest.fixture (scope="function",params=None,autouse=False,ids=None,name=None)

  参数解析

  1.scope

有四个参数值:

  function(默认):文件中的每个方法前后都会运行setup和teardown

  module:在每个文件中只运行一次,在某一个方法的前后运行setup和teardown

  class:在每个类的前后执行setup和teardown

  session:在每个文件中只运行一次,在第一个方法前和最后一个方法后运行setup和teardown

  2.params

可选的参数列表,它将导致多个参数调用fixture功能和所有测试使用它

  3.autouse

如果为True,则为所有测试激活fixture func可以看到它;如果为False(默认值),则显示需要参考来激活fixture

  4.ids

每个字符串id的列表,每个字符串对应于params,这样他们就是测试ID的一部分,如果没有提供ID,它们将从params自动生成

  5.name

fixture的名称,默认为装饰函数的名称,如果fixture在定义它的同一模块中使用,夹具的功能名称将被请求夹具的功能arg遮蔽;解决这个问题的一种方法是将装饰函数命名,如下

    @pytest.fixture(name='<fixture>')

    def fixture_<fixture>():

使用:@pytest.mark.usefixtures (*fixturenames)

使用带标记的yield函数实现setup和teardown:

  1.yield前的为setup,yield后的为teardown

  2.如果其中一个用例出现异常,不影响yield后面的teardown执行,用例全部执行完后,yield呼唤teardown的操作

  3.如果setup就出现异常,那么不会执行teardown的内容

  4.yield可以配合with语句使用

  (2)parametrize

参数化,为测试用例提供数据:@pytest.mark.parametrize(argnames, argvalues, indirect=False, ids=None, scope=None)

参数:

  argnames,使用多个参数:"a,b,c"

  argvalues,多组参数值,一组为一个tuple,多组值组成一个list:[(1,2,3) (4,5,6) ]

  (3)skip/xfail

@pytest.mark.skip(reason=None),期望失败的测试,跳过

@pytest.mark.skipif(condition, reason=None),有条件的跳过

@pytest.mark.xfail(condition=None, reason=None, raises=None, run=True, strict=False),希望由于某种原因而失败

3、conftest.py配置文件

注意:
  1.conftest.py文件名称是固定的,不能改名称

  2.conftest.py与运行的case要在同一package下

  3.不需要import conftest.py,pytest用例会自动查找

原文地址:https://www.cnblogs.com/yjh1995/p/12197493.html