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报告

 

posted @ 2020-04-07 14:44  吃个鱼丸  阅读(671)  评论(0编辑  收藏  举报