安装pytest:pip install -U pytest
查看版本:pytest --version
文件名必须以test开头或者_test.py结尾,否则收集不到。
测试类必须Test开头,不能带有init方法
测试函数名必须以test开头
pytest三种执行方式:
方法一:命令行执行:pytest test0520.py
方法二:修改pycharm默认测试框架
方法三:修改run configurations
pytest常用命令参数:
-k 常用于筛选要进行运行的测试函数
-m 执行被打上标记为xx的用例,可以用装饰器@pytest.mark做标记
–collect-only:只显示搜集到的用例,不执行
-x:一旦有用例执行失败
-s:显示标准输出,例如print()语句
-v:显示详细报告
-q:显示简洁报告
–maxfail=n:最大失败n后停止测试
–if(–last-failed):仅执行上次失败的用例,如果没有失败的,默认运行所有
pytest框架结构:
模块级(setup_module/teardown_module)开始于模块始末, 全局的
函数级(setup_function/teardown_function)叧对函数用例生效(不在类中)
类级(setup_class/teardown_class)在类中前后运行一次(在类中)
方法级(setup_method/teardown_method)开始于方法始末 (在类中)
类里面的(setup/teardown)运行在调用方法的前后
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 模块级别
def setup_module():
print("资源准备:setup--module")
def teardown_module():
print("资源准备:teardown--module")
def test_case1():
print("testcase1")
def setup_function():
print("资源准备:setup--function")
def teardown_function():
print("资源消毁:teardown--function")
class TestDemo:
# 执行类 前后分别执行setup_class teardown_class
def setup_class(self):
print("TestDemo setup_class")
def teardown_class(self):
print("TestDemo teardown_class")
# 每个类里面的方法前后分别执行 setup, teardown
def setup(self):
print("TestDemo setup")
def teardown(self):
print("TestDemo teardown")
def test_demo1(self):
print("test-demo1")
def test_demo2(self):
print("test-demo2")
class TestDemo1:
# 执行类 前后分别执行setup_class teardown_class
def setup_class(self):
print("TestDemo1 setup_class")
def teardown_class(self):
print("TestDemo1 teardown_class")
# 每个类里面的方法前后分别执行 setup, teardown
def setup(self):
print("TestDemo1 setup")
def teardown(self):
print("TestDemo1 teardown")
def test_demo1(self):
print("test demo1")
def test_demo2(self):
print("test demo2")
if __name__ == '__main__':
TestDemo
执行结果:
pytest执行case顺序插件
pip install pytest-ordering
import pytest
@pytest.mark.run(order=2)
def test_add():
pass
@pytest.mark.run(order=1)
def test_div():
pass