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用例会自动查找