python-pytest执行顺序

关于pytest框架执行顺序是:pytest默认是按照字母来执行执行顺序

import pytest

class Test_base():

    def setup_class(self):
        print("------->setup_class")
    def teardown_class(self):
        print("------->teardown_class")
    def setup(self):
      print("------->setup_method")
    def teardown(self):
      print("------->teardown_method")

    def test_1(self):
        print('Test_1')
    def test_2(self):
        print('Test_2')
    def test_3(self):
        print('Test_3')
        assert 2 == 1 + 2

    #跳过测试函数:条件、备注
    @pytest.mark.skipif(condition=2 > 1, reason="跳过该函数")
    def test_4(self):
        print('Test_4')

    #标记失败函数:条件、备注
    @pytest.mark.xfail(condition=2 > 1, reason="标记失败该函数")
    def test_5(self):
        print('Test_5')

    #函数参数化:argnames参数名、  argvalues参数对应值,类型必须为list
    #@pytest.mark.parametrize("a",[3,6])
    #@pytest.mark.parametrize("a,b",[(1,2),(0,3)])
    argvalues=[]
    @pytest.mark.parametrize("argnames", argvalues)
    def test_6(self,argnames):
        print('Test_6')

    #自定义标签
    @pytest.mark.shuzf
    def test_shuzf(self):
        #pdb.set_trace()  # 设置断点
        print('shzuf')



if __name__ == '__main__':
    pytest.main(['-s', 'test_demo1.py'])

 

python结合参数化执行顺序: 参数化函数pytest_generate_tests在  函数fixture_test之前

import pytest
import time


test_case=['a','b','c']
def pytest_generate_tests(metafunc):
    ids=[]
    if 'parameters' in metafunc.fixturenames:
        for case in test_case:
            ids.append(case)
    metafunc.parametrize('parameters',test_case, ids=ids, scope='function')
    print('在用例之前,在setup之前:',time.time())
    print('测试用例是:',metafunc.function.__name__)

@pytest.fixture(scope="session", autouse=True)
def fixture_test():
    print("\nsetup 用例开始执行:",time.time())
    yield
    print("\nteardown 所有用例执行完毕")

class TestCollection(): def test1(self,parameters): print(parameters,id(parameters)) if __name__ == '__main__': pytest.main(['-s', '0629.py'])

 

posted @ 2021-07-07 14:24  南方的墙  阅读(889)  评论(0编辑  收藏  举报