pytest基本用法速查手册
1.参数化传参
@pytest.mark.parametrize(key_list_string,value_list)。value_list为列表,列表中有多少组数据,这个函数就会遍历数据执行多少次。例如:@pytest.mark.parametrize('task1,task2',[[1,2]]),支持id标识。例如:
2.fixture
fuxture:即测试用例执行的环境准备和清理。
定义fixture:在函数申明前加上@pytest.fixture,表示此函数为测试环境数据的准备和清理。
fixture作用域:fixture的参数中,有scope作用域:
function:每个test都运行,默认就是function的scope,对应unittest中的setup和teardown;
class:每个class的所有test只运行一次,相当于unittest中的setUpClass和tearDownClass;
module:每个module的所有test只运行一次
session:每个session只运行一次
用yield关键字来区分准备工作和清理工作的分界线。
fixture中设置返回值:yield 返回值
实例如下:
调用fixture:测试用例/类中调用fixture的三种方式:
1.在测试用例中直接调用它,将fixture的函数名字作为测试用例的参数,如果fixture有返回值,那么测试用例中的fixture的函数名字就接收返回值。
2.用fixture装饰器调用fixture:在测试用例/类前面加上@pytest.mark.usefixture("函数名"),如下所示:
3.用autos调用fixture,不推荐使用。
3.conftest.py
多个测试类或用例都会使用到的fixture,我们一般会提取出来放在conftest.py(和testcase在同级目录下)中,pytest框架在执行用例时会主动找到这个文件(不需要导入),并根据里面函数设置的fixture的作用域(scope)来执行。
1.conftest.py文件名字是固定的,不可以做任何修改
2.文件和用例文件在同一个目录下,那么conftest.py作用于整个目录
3.conftest.py文件所在目录必须存在__init__.py文件
4.conftest.py文件不能被其他文件导入
5.所有同目录测试文件运行前都会执行conftest.py文件
6.contest.py文件中的函数前需要加上@pytest.fixture
fixture函数的搜索顺序是,先搜索当前模块,然后搜索conftest.py。conftest.py可以被pytest视作一个fixture仓库。
4.运行命令
pytest提供了多种选择来执行测试用例,可以指定某个用例,某个模块下用例来运行等等
pytest中同样提供了main() 函数来执行测试用例。
5.生成allure测试报告
1.在执行文件中指定生成allure测试报告路径:
2.执行用例完成
3.在命令行执行命令: allure serve 生成的allure测试报告路径,如下,执行命令完毕会自动通过浏览器打开allure报告