pytest 常用方法
一、pytest 特点
- 支持参数化
- 支持某些测试跳过(skip)
- 支持重复执行失败的case
- 支持执行部分用例
- 方便jenkins与allure报告
二、用例执行规则
- 只执行 pytest ,会查找当前目录及其子目录下以 test_*.py 或 *_test.py 文件,找到文件后,在文件中找到以 test 开头函数并执行
三、常用方法
1、fixture
1)定义fixture:@pytest.fixture()
2)调用fixture:
- 在需要调用的函数()内把定义fixture的函数名称当做参数传入。
- @pytest.mark.usefixtures() 的括号内填入定义fixture的函数名称。
两者的区别,需要到reture 值时,只能使用传参的方式。不需要到reture,两者都可以使用。
2、skip(跳过用例)
1)调用方法:@pytest.mark.skip()
3、xfail(预期失败)
1)调用方式:@pytest.mark.xfail() ,注:xfail(condition, reason)
--condition 预期失败的条件
--reason 预期失败的原因
4、parametrize (参数化)
1)调用方式:@pytest.mark.parametrize () ,在括号内填入key与value。
5、flaky(失败重跑)
1)调用方式:@pytest.mark.flaky(reruns=5, reruns_delay=1)
6、pytest hook 钩子函数(可以自定义功能或者插件)
什么是hook 函数?
1)通俗的说,就是根据软件定义某些钩子函数,当软件命中某些行为时就会执行钩子函数内设定好的逻辑。前提必须提供给外部使用,相当于对软件进行监听和修改。
什么情况使用到hook 函数呢?
1)在pytest 中Hook函数通常需要在conftest.py(全局生效)文件中定义。(如果不在这个文件内定义也是可以,只能局部生效)
1、获取pytest 执行结果,@pytest.hookimpl 2、修改pytest 乱码(参数化用例中文名称),pytest_collection_modifyitems()。 3、提前进行异常处理,避免用例执行失败终止测试。
4、进行用例参数化。
四:allure 特性