标签:sel rgb obj test 完全 rgba 作用 思考 16px
前言:
前面我们所举的示例都是将前置操作函数名直接传入测试函数和测试方法。
那如果我们想对整个测试类使用前置操作怎么办呢?这时候我们可以使用@pytest.mark.usefixtures()
一、对整个类使用@pytest.mark.usefixtures
@pytest.mark.usefixtures()接受一个参数,那就是前置函数的方法名,以字符串的形式传入。
见示例:
文件:test_a.py
import pytest def test_1(login): assert 3 == 3 print("this is test_1") def test_2(): assert 4 == 4 print("this is test_2") @pytest.mark.usefixtures("login") class TestA(object): def test_a(self): assert 1 == 1 print("this is test_a") def test_a_1(self): assert 2 == 2 print("this is test_a_1")
文件:conftest.py
import pytest @pytest.fixture() def login(): print("this is login ")
示例中:TestA类被@pytest.mark.usefixtures("login"),且传入了前置函数名login(字符串形式传入)
执行结果:
test_a.py::test_1 this is login PASSED [ 25%]this is test_1 test_a.py::test_2 PASSED [ 50%]this is test_2 test_a.py::TestA::test_a this is login PASSED [ 75%]this is test_a test_a.py::TestA::test_a_1 this is login PASSED [100%]this is test_a_1
从执行结果中我们可以看出,TestA类中的所有测试方法执行前都执行了前置函数login。
结论:对测试类使用装饰器@pytest.mark.usefixtures()时,将作用于测试类中的每一个测试方法。
思考:可以对测试函数和测试方法使用吗?
二、对测试方法或测试函数使用@pytest.mark.usefixtures:
直接看示例:
@pytest.mark.usefixtures("login") def test_1(): assert 3 == 3 print("this is test_1") def test_2(): assert 4 == 4 print("this is test_2") class TestA(object): @pytest.mark.usefixtures("login") def test_a(self): assert 1 == 1 print("this is test_a") def test_a_1(self): assert 2 == 2 print("this is test_a_1")
示例中,我们可以看到,测试函数test_1和测试方法test_a被@pytest.mark.usefixtures("login”)装饰了。
执行结果:
test_a.py::test_1 this is login PASSED [ 25%]this is test_1 test_a.py::test_2 PASSED [ 50%]this is test_2 test_a.py::TestA::test_a this is login PASSED [ 75%]this is test_a test_a.py::TestA::test_a_1 PASSED [100%]this is test_a_1
我们可以看到测试函数test_1和测试方法test_a执行了前置函数login(),而其他的未执行。
结论:@pytest.mark.usefixtures()同样可以应用于测试函数和测试方法。
思考:既然@pytest.mark.usefixutres()和传入前置操作函数名是完全一样吗?
答案:当然不是,我们现在举得例子,对于前置操作都没有返回值,当有返回值时二者有着很大得区别。
pytest之fixture:如何对测试类使用fixture
标签:sel rgb obj test 完全 rgba 作用 思考 16px
原文地址:https://www.cnblogs.com/ctltest/p/14550645.html