Pytest简介
应用场景:
pytest框架可以解决我们多个测试脚本一起执行的问题
Pytest 特点:
- 简单
- 易读
- 支持参数化
- 用 assert 来测试失败,而不是 self.assertEqual() 或者 self.assertLessThan()
- 可运行 unittest 或 nose 测试。
- 方便持续集成工具集成
安裝pytest
pip install pytest -i https://pypi.tuna.tsinghua.edu.cn/simple/
查看帮助
pytest -h
pytest书写规则
使用pytest编写用例,必须遵守以下规则
- 测试文件名必须以“test”开头或者'test'结尾
- 测试方法必须以“test”开头
- 测试类名以“Test”开头
- 断言使用基本的assert即可
使用pytest需要更改pycharm集成设置,pytest 可以执行unittest的用例和方法
Pytest运行方式
- 命令行模式【建议】
test_demo.py
# -*- coding: utf-8 -*-
"""
@Time : 2023/10/18 14:42
@Author : 娜年花开
@File : test_demo.py
@Desc :
"""
import pytest
class Test:
def test_case01(self):
print(1)
def test_case02(self):
print(2)
cmd执行
pytest test_demo.py
pytest -s test_demo.py
-s 表示支持控制台打印,如果不加,print不会出现任何内容
- 主函数模式
test_demo.py
# -*- coding: utf-8 -*-
"""
@Time : 2023/10/18 14:42
@Author : 娜年花开
@File : test_demo.py
@Desc :
"""
import pytest
class Test:
def test_case01(self):
print(1)
def test_case02(self):
print(2)
if __name__ =="__main__":
pytest.main(['-s'],'test_demo.py')
在 test_demo.py文件中增加主函数
小结:
建议使用命令行的形式运行,对比主函数模式更加方便
. 表示成功
F表示失败
Setup 和 Teardown
pytest 在运行自动化脚本的前后会执行两个特殊方法,分别是setup和teardown
在执行脚本之前会执行setup方法,在执行脚本之后会执行teardown方法
我们可以在setup中进行获取驱动对象的操作,在teardown中进行关闭驱动对象的操作
应用场景
- 函数级别方法
运行与测试方法的始末,运行一次测试函数会运行一次setup和teardown
实例代码
# -*- coding: utf-8 -*-
"""
@Time : 2023/10/18 14:42
@Author : 娜年花开
@File : test_demo.py
@Desc :
"""
import pytest
class Test:
def setup(self):
print('test--->setup')
def teardown(self):
print('test--->down')
def test_case01(self):
print('test--->1')
def test_case02(self):
print('test--->2')
if __name__ =="__main__":
pytest.main(['-s'],'test_demo.py')
执行结果
- 类级别方法
运行与测试类的始末,在一个测试类中只运行一次setup_class 和 teardown_class,不关心测试类内容有多少个测试函数
示例代码
# -*- coding: utf-8 -*-
"""
@Time : 2023/10/18 14:42
@Author : 娜年花开
@File : test_demo.py
@Desc :
"""
import pytest
class Test:
def setup_class(self):
print('test--->setup')
def teardown_class(self):
print('test--->down')
def test_case01(self):
print('test--->1')
def test_case02(self):
print('test--->2')
if __name__ =="__main__":
pytest.main(['-s'],'test_demo.py')
执行结果