pytest入门使用二
一、pytest 分组划分测试(分阶段、分模块、分接口和web执行)
(1)编写ini配置文件,noteopad++ 进行ansi编码,添加markers 自定义测试阶段、模块、接口等等
(2)添加addopts = -vs -m "usermanage" 运行多个接口或者模块 添加addopts = -vs -m "usermanage or smoke"
(3) 运行指定模块usermanage,只会运行一条用例
(4)跳过某条用例 @pytest.mark.skip() 如果添加原因标记:使用reason(非必填)
(5)通过 pip install pytest-html,创建report 空文件夹,编写ini配置文件,noteopad++ 进行ansi编码,addopts = -vs -m "usermanage" --html ./report/report.html
示例代码:
二、 pytest 使用@pytest.fixture()装饰器来实现部分用例的前后置
@pytest.fixture(scope="",params="",autouse="",ids="",name="")
(1) scope 表示的是@pytest.fixture标记的方法的作用域,function(默认),class,module,package/session
(2) params:参数化
(3) ids:当地使用params参数化时,给每一个值设置一个变量名,意义不大
(4)name:给表示的是被@pytest.fixture标记的方法去一个别名
示例代码:
ini的配置文件信息不变
2.(1)当autouse=False时,@pytest.fixture(scope="function",autouse=False,params=['zhangsan','lisi']) 只作用于用例test_01
(2)当autouse=True时,@pytest.fixture(scope="function",autouse=True,params=['zhangsan','lisi']) 作用于test_01 和 test_02
3.当autouse=True或者False时,@pytest.fixture(scope="module",autouse=True,params=['zhangsan','lisi']) 作用于test_01 和 test_02,前后置操作执行一次
(4)params:参数化,params=['zhangsan','lisi'],传递给 my_fixture中的request参数,通过return语句返回获取到的参数。
示例代码:
(5)通过conftest.py 和 @pytest.fixture()结合使用实现全局的前置应用(比如:项目的全局登录,模块的全局处理)
1.conftest.py文件是单独存放的一个夹具配置文件,名称是不能更改
2.用处可以在不同的py文件中使用同一个fixture函数
3.原则上conftest.py需要和运行的用例放在同一层,并且不需要做任何的import导入的操作
示例代码如下: