1.pycharm设置运行pytest
File→Settings→Tools→python Integrated Tools→packaging中Package requirements file选择对应的工程文件目录→Testing中Default test runner选择pytest
2.命名规范
包名、模块名、局部变量名、函数名:
全小写+下划线式驼峰
example: this_is_var
全局变量:
全大写+下划线式驼峰
example: GLOBAL_VAR
类名:
首字母大写式驼峰,否则会报错提示语法错误
example: ClassName()
3.测试用例规则
- 测试文件以test_开头(以_test结尾也行)
- 测试类以Test开头,并且不能带有__init__方法
- 测试函数以test_开头
- 断言使用基本的assert即可
4.pytest前置和后置
(1)模块级别:setup_module/teardown_module,整个.py全部用例开始前执行/全部用例执行完后执行
(2)函数级别:setup_function/teardown_function,只对函数级别生效,每个用例开始前和结束后执行一次
(3)类级别:setup_class/teardown_function,只对类级别生效,类里面所有用例开始前执行一次,所有用例执行完执行一次
(4)方法级别:setup_method/teardown_method,只是类里面方法级别生效,方法开始前执行一致,方法结束后执行一次
(5)方法级别:setup/teardown,这个与setup_method/teardown_method用法很类似,但是级别比method级别要低,也就是说在同一个方法中会先执行setup_method再执行setup,方法结束后先执行teardown再执行teardown_method
pytest自定义设置前置和后置:
通过fixture可以自定义pytest的前置和后置,格式fixture(scope=”function”, params=None, autouse=False, ids=None, name=Noe)
scope:有四个级别,function(默认),class,module,session
params:参数列表
autouse:False为默认值,意思代表需要根据设置的条件(scope级别)来激活fixture,如果为Ture,则表示所有function级别的都被激活fixture
ids:每个字符串id的列表,感觉没啥实质性作用
name:fixture的名字
5.参数化
通过装饰器@pytest.mark.parametrize来实现
6.生成报告
1.生成Allure报告
下载allure
配置环境变量
pip install allure-pytest或在pycharm中下载allure-pytest
import pytest,allure
@allure.feature('学习pytest')
class Testclass:
@allure.story('这是第一个用例')
def test_1