系列文章目录
Pytest测试框架(一):pytest安装及用例执行
Pytest测试框架(二):pytest 的setup/teardown方法
Pytest测试框架(三):pytest fixture 用法
Pytest测试框架(四):pytest 参数化用例
Pytest测试框架(五):pytest + allure生成测试报告
Pytest插件开发
目录
xUnit style 结构的 fixture用于初始化测试函数, pytest fixture是对传统的 xUnit 架构的setup/teardown功能的改进。pytest fixture为测试准备一个良好的测试环境,测试函数使用的每个 fixture通常有一个参数(以 fixture 命名),测试函数通过参数访问它们。本文将介绍pytest fixture的一些基本用法。
@pytest.fixture
import pytest
@pytest.fixture()
def login():
print("登录")
return 8
class Test_Demo():
def test_case1(self):
print("\n开始执行测试用例1")
assert 1 + 1 == 2
def test_case2(self, login):
print("\n开始执行测试用例2")
print(login)
assert 2 + login == 10
def test_case3(self):
print("\n开始执行测试用例3")
assert 99 + 1 == 100
if __name__ == '__main__':
pytest.main()
test_case2需要调用login方法(或者获取login的返回值),pytest 将会寻找并调用@pytest.fixture
标记的login() 方法。
结果:
PASSED [ 33%]
开始执行测试用例1
登录
PASSED [ 66%]
开始执行测试用例2
8
PASSED [100%]
开始执行测试用例3
共享 fixture 函数:conftest.py
在测试过程中,多个测试文件可能都要调用 fixture 函数,可以将其移动到 conftest.py 文件中。conftest.py 文件中的 fixture 函数不需要在测试函数中导入,可以被 pytest 自动识别,查找顺序从测试类开始,然后是测试模块,然后是 conftest.py 文件,最后是内置插件和第三方插件。
conftest.py :
import pytest
@pytest.fixture()
def login():
print("登录")
return 8
测试用例:
import pytest
class Test_Demo():
def test_case1(self):
print("\n开始执行测试用例1")
assert 1 + 1 == 2
def test_case2(self, login):
print("\n开始执行测试用例2")
print(login)
assert 2 + login == 10
def test_case3(self