1.生成时间戳的html报告
# pytest 运行项目
import pytest
from datetime import datetime
# 获取时间戳,now()获取现在的时间,strftime()转化成字符串
report_time = datetime.now().strftime("%Y%m%d%H%M%S")
# 字符串拼接
filename = f'pyreport-{report_time}.html'
# 收集用例并运行用例
# 命令行参数放入列表中
pytest.main([f"--html={filename}"])
2.fixture夹具
实现夹具复用,就要封装,测试用例函数调用夹具时,就需要导入模块,但是每次都导入,容易出现错误,那么有没有一种方法可以实现不需要导入而自动读取呢?共享fixture的出现就解决了这个问题。
2.1 共享fixture
共享fixture的实现:
1)将所有的夹具全部放到一个固定的模块文件,conftest.py 文件名固定
conftest.py:
import pytest
# 声明这是一个夹具,这个夹具就是个函数
@pytest.fixture()
def fixt():
# setUp
print("每次测试都会执行的")
# yield 分割线 前置和后置
yield
# tearDown
print("每次测试用例后都会执行的")
2)所有导入夹具的操作就可以省略,pytest运行时会自动在conftest.py中查找
测试用例:不需要进行导入操作
import pytest
class TestFixture:
# 调用夹具
def test_fixture(self, fixt):
assert 1 + 1 == 2
class TestFixture1:
# 调用夹具
def test_fixture1(self, fixt):
assert 1 + 1 == 2
运行结果:
2.2 夹具的作用域
pytest的夹具除了有共享fixture的特性外,还有非常灵活的作用域管理。