# -*- coding: utf-8 -*-
import pytest
@pytest.fixture()
def login():
print('登录系统')
# 直接使用函数名做为参数传入
def test_01(login):
print('测试用例一')
def test_02():
print('测试用例2')
def test03():
print('测试用例3')
运行结果
testcase.py::test_01 登录系统
测试用例一
PASSED
testcase.py::test_02 测试用例2
PASSED
testcase.py::test03 测试用例3
PASSED
# scope有4个作用范围:function(不填则默认)、class、module、session
fixture(scope='function', params=None, autouse=False, ids=None, name=None)
# -*- coding: utf-8 -*-
import pytest
# 当前就算定义了装饰器,也不会调用Login
@pytest.fixture()
def login():
print("打开浏览器")
def test1():
print("test1里的用例")
def test2():
print("test2里的用例")
# -*- coding: utf-8 -*-
import pytest
@pytest.fixture()
def login():
print("打开浏览器")
# 直接传入函数名
def test1(login):
print("test1里的用例")
def test2(login):
print("test2里的用例")
# -*- coding: utf-8 -*-
import pytest
# autouse设为True,就能自动调用login的装饰器
@pytest.fixture(autouse=True)
def login():
print("打开浏览器")
# 直接传入函数名
def test1():
print("test1里的用例")
def test2():
print("test2里的用例")
# -*- coding: utf-8 -*-
import pytest
@pytest.fixture(scope='function', autouse=True)
def login():
print('登录系统')
def test_01():
print('测试用例一')
def test_02():
print('测试用例2')
def test03():
print('测试用例3')
运行结果
testcase.py::test_01 登录系统
测试用例一
PASSED
testcase.py::test_02 登录系统
测试用例2
PASSED
testcase.py::test03 登录系统
测试用例3
PASSED
# -*- coding: utf-8 -*-
# @Time : 2021/1/14 21:05
# @Author : 公众号(程序员一凡)
import pytest
@pytest.fixture(scope='class', autouse=True)
def login():
print('登录系统')
def test_01():
print('这个是类外面的用例')
class TestCase1:
def test_02(self):
print('测试用例2')
def test03(self):
print('测试用例3')
class TestCase2:
def test_04(self):
print('测试用例4')
def test05(self):
print('测试用例5')
运行结果
类里面的方法只会调用一次
pytest 机制,因为方法是以 test 开头,所以也会调用
testcase.py::test_01 登录系统
这个是类外面的用例
PASSED
testcase.py::TestCase1::test_02 登录系统
测试用例2
PASSED
testcase.py::TestCase1::test03 测试用例3
PASSED
testcase.py::TestCase2::test_04 登录系统
测试用例4
PASSED
testcase.py::TestCase2::test05 测试用例5
PASSED
# -*- coding: utf-8 -*-
import pytest
@pytest.fixture(scope='class', autouse=True)
def open():
print("打开浏览器,并且打开百度首页")
def test_s1():
print("用例1:搜索python-1")
class TestCase():
def test_s2(self):
print("用例2:搜索python-2")
def test_s3(self):
print("用例3:搜索python-3")
运行结果
testcase.py::test_s1 打开浏览器,并且打开百度首页
用例1:搜索python-1
PASSED
testcase.py::TestCase::test_s2 打开浏览器,并且打开百度首页
用例2:搜索python-2
PASSED
testcase.py::TestCase::test_s3 用例3:搜索python-3
PASSED
# -*- coding: utf-8 -*-
# conftest文件内容
import pytest
@pytest.fixture(scope="session", autouse=True)
def login():
print("调用conftest文件的里的方法")
两个用例文件
# -*- coding: utf-8 -*-
# testcase1.py
import pytest
def test1():
print("test1里的用例")
def test2():
print("test2里的用例")
# -*- coding: utf-8 -*-
# testcase1.py
import pytest
def test3():
print("test3里的用例")
def test4():
print("test4里的用例")
运行结果
testcase.py::test1 调用conftest文件的里的方法
test1里的用例
PASSED
testcase.py::test2 test2里的用例
PASSED
testcase1.py::test3 test3里的用例
PASSED
testcase1.py::test4 test4里的用例
PASSED
03