test_pytest1.py: 运行的时候鼠标放在类上才能运行全部用例
import pytest class TestCase(): def test_case_01(self): num = 1 + 1 print("打印计算结果:{}".format(num)) assert num == 2 @pytest.mark.usefixtures('init_function1')#调用前置 def test_case_02(self): num = 1 + 2 print("打印计算结果:{}".format(num)) assert num == 3 def test_case_03(self,init_function1): #也可以用传参方式调用 num = 1 + 3 print("打印计算结果:{}".format(num)) assert num == 4 @pytest.mark.usefixtures('init_function3')#调用前置 @pytest.mark.usefixtures('init_function1','init_function2')#调用前置 def test_case_04(self): #usefixtures可以传多个前置,也可以叠加(最近的先执行) num = 1 + 4 print("打印计算结果:{}".format(num)) assert num == 5
import pytest @pytest.fixture(scope="session") def init_session(): print("回话前置") yield print("回话后置") @pytest.fixture(scope="module") def init_module(): print("模块前置") yield print("模块后置") @pytest.fixture(scope="class") def init_class(): print("类的前置") yield print("类的后置") @pytest.fixture(scope="function") def init_function(): print("用例前置") yield print("用例后置")
test_xx.py:
import pytest def test_01(): print("用例01") @pytest.mark.usefixtures('init_module') def test_02(): print("用例02") @pytest.mark.usefixtures('init_class') class TestLogin(): def test_1(self): print("用例1") @pytest.mark.usefixtures('init_function') def test_2(self): print("用例2")
列表中的每一组数据都执行了一遍测试用例。
-----------------
3、autouse参数实例讲解
-
默认False
-
若为True,刚每个测试函数都会自动调用该fixture,无需传入fixture函数名
-
由此我们可以总结出调用fixture的三种方式:
1.函数或类里面方法直接传fixture的函数参数名称
2.使用装饰器@pytest.mark.usefixtures()修饰
3.autouse=True自动调用,无需传仍何参数,作用范围跟着scope走(谨慎使用)
代码实例:
conftest.py:
import pytest @pytest.fixture(scope="session",autouse=True) def init_session(): print("回话前置") yield print("回话后置")
test_xx.py
import pytest class TestCase(): def test_case_01(self): #这里没有调用前置,看看运行是否自动执行了 print("测试用例01")
4、name参数实例讲解
-
fixture的重命名
-
通常来说使用 fixture 的测试函数会将 fixture 的函数名作为参数传递,但是 pytest 也允许将fixture重命名
-
如果使用了name,那只能将name传如,函数名不再生效
代码实例
conftest.py:
import pytest @pytest.fixture(scope="function",name="new_fixture") def init_session(): print("用例前置") yield print("用例后置")
test_xxx.py:
class TestCase(): def test_case_01(self,new_fixture): #这里没有调用前置,看看运行是否自动执行了 print("测试用例01")标签:自定义,fixture,pytest,test,init,Pytest,print,def From: https://www.cnblogs.com/pingzi66-ww/p/17103481.html