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'])